Si prega di includere:
- La definizione di entità
- La classe di mappatura/configurazione dal contesto
- La definizione della tabella SQL
BackPropagateServerGen
Osservando la traccia dello stack, la cosa chiave che vedo è BackPropagateServerGen
.
Entity Framework sta eseguendo l'aggiornamento sul database, ma uno dei valori di chiave compositi (presumibilmente COPY_ID) viene effettivamente modificato dalla chiamata UPDATE. Questo valore generato dal server viene restituito dalla chiamata SQL e Entity Framework si lamenta che il valore della chiave viene modificato da sotto di esso.
Quindi, suppongo che il valore della tua chiave composita COPY_ID sia definito come identificatore generato dal server, ma uno o entrambi si stanno verificando:
- Stai effettuando il mapping a una vista o a una procedura memorizzata che interferisce con ciò che Entity Framework si aspetterebbe da un AGGIORNAMENTO vanilla
- Hai uno o più trigger sulla tabella, vista o procedura memorizzata che interferisce con il risultato.
Se hai dei trigger, disabilitali temporaneamente per vedere se il problema si interrompe.
Se stai mappando su una vista o su una procedura memorizzata, prova a mappare direttamente sulla tabella, se possibile.
Usa tutti gli strumenti di profilazione che hai per catturare ciò che SQL viene eseguito dal codice.
Riepilogo
Penso che la chiamata UPDATE stia effettivamente raggiungendo il database, ma il risultato restituito sta cambiando i valori chiave, causando il fallimento di Entity Framework e probabilmente ripristinando la transazione UPDATE (a seconda della versione di EF in uso).