Avatar billede p_gaard Juniormester
15. oktober 2018 - 17:19 Der er 2 kommentarer og
2 løsninger

Entity framework, klient modtager gammelt data

Hej, 

Jeg har en backend i entity framework med repository pattern samt unit of Work pattern.

Min frontend er WebForms (visual studio) som indlæser og sender json via ajax. Efter redigering af poster hos klient opdateres databasen fint, men det nyopdaterede data vises ikke hos klienten. Det gør det dog hvis jeg enten er heldig eller genstarter applikationen.

Repository, evt. her skal puttes noget ind:

        public virtual T Update(T entity)
        {
            this.context.LoadRequiredProperties<T>(entity).SaveChanges();
            this.context.SaveChanges();
            return entity;
        }

  Eller måske i AJAX skal problemet findes:

        $.getJSON("http://localhost:8080/api/tests?testStatusId="+gup("testStatusId")+"&projectId="+gup("project")+"&barcode",
            function (data) {
                $('#Analysis').empty(); // Clear the table body.

                // Loop through the list of Analysis.
                $.each(data, function (key, val) {
                  ......................................
                    $('<tr/>', { html: row })  // Append the name.
                        .appendTo($('#Analysis'));
                });
            });

Endelig kunne det være i controleren.

        [Route("status")]
        [HttpPut]
        public TestModel[] PutStatus(TestModel[] testData)
        {
            if (testData[0].StatusId == 3)
            {
                statusName = "APPROVED";
            }
            if (testData[0].StatusId == 4)
            {
                statusName = "FAILED";
            }
            return testData.Select(x =>
            {
                var xx = this.testService.Get(x.Id);
                return TestModel.Create(this.testService.Update(x.PutStatus(xx)), this.clientDateFormat);
            }).ToArray();
        }



En der kan hjælpe?

Mvh

Peter Krøll Korsgaard
Avatar billede softspot Forsker
15. oktober 2018 - 18:04 #1
Det første sted jeg ville kigge var på getJSON. Her forestiller jeg mig, at der foretages caching af det der hentes. Du skal nok kigge på at slå caching fra, enten ved at sætte et timestamp på din url, eller gøre det i jQuery.
Avatar billede arne_v Ekspert
15. oktober 2018 - 19:35 #2
Jeg synes at vi mangler en del brikker til puslespillet.

Vi har:
* oplysning om at der bruges ASP.NET web forms
* oplysning om at der sendes (PUT formoder vi) via AJAX
* ASP.NET Win API C# kode der vise at en put til /status vil gemme status
* JS kode som henter /test med query paa status

Det er helt uklart for mig hvordan PUT faktisk laves og hvordan de viste data burde opdateres.
Avatar billede Slettet bruger
16. oktober 2018 - 01:54 #3
i din kode, LUK forbindelsen til databasen, inden du åbner den.
så burde den levere nyeste data
Avatar billede p_gaard Juniormester
17. oktober 2018 - 00:55 #4
Hej,

Jeg har løst problemet ved at putte timestamp på URL'en i min ajax getAnalysis.

"&_="+Number(new Date())


    function getAnalysis() {
        $.getJSON("http://localhost:8080/api/tests?Barcode="+gup("Barcode")+"&_="+Number(new Date()),
            function (data) {
                $('#Analysis').empty(); // Clear the table body.
                // Loop through the list of Analysis.
                $.each(data, function (key, val) {
                    // Add a table row for the product.
                    var md = "onMouseOver=' $(document).ready(getAnalysis1(" + val.id + "));' ondblclick='setComment(123);'";
                    var row =
                        "<td style='width:200px' " + md + " >" + val.sampleBarcode + "</td>" +
                        "<td style='width:300px' " + md + ">" + val.timestamp + "</td'>" +
                        "<td style='width:200px' " + md + ">" + val.testResultTimestamp + "</td>" +
                        "<td style='width:300px' " + md + ">" + val.typeName + "</td>" +
                        "<td style='width:200px' " + md + ">" + val.statusName + "</td>" +
                        "<td style='width:100px;display:none;'>" + val.sampleId + "</td>" +
                        "<td style='width:100px;display:none;'>" + val.projectId + "</td>" +
                        "<td style='width:100px;display:none;'>" + val.orderId + "</td>" +
                        "<td style='width:100px;display:none;'>" + val.statusId + "</td>" +
                        "<td style='width:100px;display:none;' " + md + ">" + val.id + "</td>" +
                        "<td style='width:100px;' " + md + ">" + val.comment + " " + "</td>";
                    $('<tr/>', { html: row })  // Append the name.
                        .appendTo($('#Analysis'));
                });
            });
    }




    function postjson(ids, action) {
        var url;
        var type;
        if (action === "genkor")
        {
            url = 'http://localhost:8080/api/tests/rerun';
            type = 'POST';
        }
        if (action === "godkend")
        {
            url = 'http://localhost:8080/api/tests/status';
            type = 'PUT';
        }
        if (action === "fejlet")
        {
            url = 'http://localhost:8080/api/tests/status';
            type = 'PUT';
        }
        if (action === "raport")
        {
            var idx = [];
                var table = document.getElementById('Analysiscss');
                var id;
                var i = 0;
                var row;
                for (i = 0; row = table.rows[i]; i++)
                {
                    if ($(row).css('background-color') === 'rgb(144, 238, 144)')
                    {
                        idx[i]=id = row.cells[9].firstChild.nodeValue;
                    }
            }
            var chkLocalReport = document.getElementById('chkLocalReport').checked;
            var json = {"TestIds": idx, "isLocalReport": chkLocalReport };
            ids = json;
            url = 'http://localhost:8080/api/tests/reports';
            type = 'POST';
        }

Tak for hjælpen.

Mvh Peter
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester