Krav: Brug EF-optimistiske låse til at kontrollere samtidighed, hvis du støder på samtidighed, tilføj en genforsøgsmekanisme, og find ud af, at de data, der genforespørges efter forsøget, er EF-cachede data, hvilket resulterer i altid gemte undtagelser.
Databaseoperationen forventedes at påvirke 1 række(r), men påvirkede faktisk 0 række(r); Data kan være blevet ændret eller slettet, siden enheder blev indlæst. SeHyperlink-login er synlig.For information om forståelse og håndtering af optimistiske samtidighedsundtagelser. Denne diskussion førte til tanker om EF 6.x og EF Core query caching:Hyperlink-login er synlig.
Som vist nedenfor:
SQL-script:
ASP.NET Core 6 backend-kode:
Controller-kode:
Mulighed 1 (anbefales)
brugEntityState.DetachedVed at markere entitetens tilstand som ikke sporet af konteksten, modificerer du den som følger:
Som vist nedenfor:
Mulighed 2
Kald Reload()-metoden for at opdatere entitetsobjektet, koden er som følger:
Selvom genindlæsning også kan opdatere EF-cacheværdier,Dette resulterer i, at SQL-forespørgsler udføres mere end én gangDerfor anbefales det ikke.
De to andre metoder, AsNoTracking, er ikke egnede, og den anden er ikke testet.
(Slut) |