Harap sertakan:
- Definisi entitas
- Kelas/konfigurasi pemetaan dari konteks
- Definisi tabel SQL
BackPropagateServerGen
Melihat jejak tumpukan, hal utama yang saya lihat adalah BackPropagateServerGen
.
Entity Framework menjalankan pembaruan Anda terhadap database, tetapi salah satu nilai kunci komposit Anda (mungkin COPY_ID) sebenarnya sedang diubah oleh panggilan UPDATE. Nilai yang dihasilkan server ini kembali dari panggilan SQL, dan Entity Framework kemudian mengeluh bahwa nilai kunci sedang diubah dari bawahnya.
Jadi, saya kira nilai kunci komposit COPY_ID Anda didefinisikan sebagai pengidentifikasi yang dibuat server, tetapi salah satu atau keduanya terjadi:
- Anda memetakan ke tampilan atau prosedur tersimpan yang mengganggu apa yang diharapkan Entity Framework dari UPDATE vanilla
- Anda memiliki satu atau beberapa pemicu di tabel, tampilan, atau prosedur tersimpan yang mengganggu hasil.
Jika Anda memiliki pemicu, nonaktifkan sementara untuk melihat apakah masalah kemudian berhenti.
Jika Anda memetakan ke tampilan atau prosedur tersimpan, coba pemetaan langsung ke tabel jika memungkinkan.
Gunakan alat profil apa pun yang Anda miliki untuk menangkap SQL yang sedang dieksekusi oleh kode.
Ringkasan
Saya pikir panggilan UPDATE sebenarnya mencapai database, tetapi hasil pengembaliannya mengubah nilai kunci, menyebabkan Entity Framework gagal, dan kemungkinan memutar kembali transaksi UPDATE (tergantung pada versi EF apa yang Anda gunakan).