Vermeld a.u.b.:
- De entiteitsdefinitie
- De toewijzingsklasse / configuratie uit de context
- De definitie van de SQL-tabel
BackPropagateServerGen
Als ik naar de stacktrace kijk, is het belangrijkste dat ik zie BackPropagateServerGen
.
Entity Framework voert uw update uit op de database, maar een van uw samengestelde sleutelwaarden (vermoedelijk COPY_ID) wordt daadwerkelijk gewijzigd door de UPDATE-aanroep. Deze door de server gegenereerde waarde komt terug van de SQL-aanroep en Entity Framework klaagt dan dat de sleutelwaarde eronder wordt gewijzigd.
Dus ik vermoed dat uw COPY_ID samengestelde sleutelwaarde is gedefinieerd als een door de server gegenereerde identifier, maar een of beide gebeurt:
- Je verwijst naar een weergave of een opgeslagen procedure die interfereert met wat Entity Framework zou verwachten van een vanille-UPDATE
- U hebt een of meer triggers op de tafel, weergave of opgeslagen procedure die het resultaat verstoort.
Als je triggers hebt, schakel ze dan tijdelijk uit om te zien of het probleem dan stopt.
Als u een weergave of een opgeslagen procedure toewijst, probeer dan indien mogelijk rechtstreeks naar de tabel te verwijzen.
Gebruik alle profileringstools die je hebt om vast te leggen welke SQL door de code wordt uitgevoerd.
Samenvatting
Ik denk dat de UPDATE-aanroep de database daadwerkelijk bereikt, maar het geretourneerde resultaat verandert de sleutelwaarde (s), waardoor Entity Framework mislukt en waarschijnlijk de UPDATE-transactie terugdraait (afhankelijk van welke versie van EF u gebruikt).