sql >> Database >  >> RDS >> Oracle

Entity Framework kan gegevens in tabel niet bijwerken met samengestelde sleutel (Oracle)

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).




  1. KitchenPC en Ironpython

  2. Dynamisch databaseverbinding wijzigen in cakephp 3

  3. Fout met externe sleutel toevoegen

  4. Controleer of de huidige datum tussen twee datums ligt + mysql select query