Rumah >pembangunan bahagian belakang >C++ >ASP.NET MVC: Bagaimana menyelesaikan kesilapan 'melampirkan entiti gagal' kerana kekunci utama pendua?

ASP.NET MVC: Bagaimana menyelesaikan kesilapan 'melampirkan entiti gagal' kerana kekunci utama pendua?

Linda Hamilton
Linda Hamiltonasal
2025-01-30 07:56:09618semak imbas

ASP.NET MVC: How to Solve

menyelesaikan kesilapan "entiti tambahan" yang disebabkan oleh konflik utama utama dalam ASP.NET MVC

Dalam ASP.NET MVC, apabila model penyuntingan dikemas kini kepada "diubah suai", ralat mungkin ditemui: "Entiti dengan jenis tambahan 'ModelName' gagal nilai utama utama yang sama". Kesalahan ini berlaku apabila entiti dikemas kini wujud dalam pendaftaran penjejakan yang wujud dalam konteksnya.

Dalam senario yang diberikan, kesilapan dibuang dalam perjalanan berikut:

Analisis ralat:
<code class="language-csharp">db.Entry(aViewModel.a).State = EntityState.Modified;</code>

Masalahnya datang dari edit edit (get)

Pengawal, yang memuat entiti yang akan diedit. Dalam operasi ini, kaedah CanUserAccessa

cuba mengesahkan akses pengguna oleh entiti pemuatan bebas. Sejak itu, entiti diletakkan dalam keadaan pemisahan. Penyelesaian:

Untuk menyelesaikan konflik, kaedah

CanuserAccessa mesti diubah suai untuk memastikan bahawa entiti tidak dikesan dalam konteks pertanyaan. Ini boleh dicapai dengan memanggil kaedah , seperti yang ditunjukkan di bawah:

Penjelasan: .AsNoTracking() Dengan menggunakan , entiti tidak akan dikesan oleh konteks apabila memuatkan. Ini menghalang kemas kini berikutnya daripada bertentangan dengan keadaan pemisahan.

<code class="language-csharp">private bool canUserAccessA(int aID)
{
    int userID = WebSecurity.GetUserId(User.Identity.Name);
    int aFound = db.Model.AsNoTracking().Where(x => x.aID == aID && x.UserID==userID).Count();

    return (aFound > 0); //如果 aFound > 0,则返回 true,否则返回 false。
}</code>
Kesimpulan:

Ralat "Kegagalan entiti jenis tambahan adalah 'ModelName' ..." mungkin berlaku apabila entiti dikemas kini telah dikesan oleh konteksnya. Untuk menyelesaikan konflik ini, adalah perlu untuk memastikan bahawa mana -mana entiti pemuatan bebas dilumpuhkan dan menjejaki, seperti kaedah

CanUserAccessa

yang diubahsuai. .AsNoTracking()

Atas ialah kandungan terperinci ASP.NET MVC: Bagaimana menyelesaikan kesilapan 'melampirkan entiti gagal' kerana kekunci utama pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn