Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menyelesaikan konflik utama entiti semasa mengedit entiti di ASP.NET MVC?

Bagaimana untuk menyelesaikan konflik utama entiti semasa mengedit entiti di ASP.NET MVC?

Linda Hamilton
Lepaskan: 2025-01-30 08:01:09
asal
520 orang telah melayarinya

How to Resolve Entity Key Conflicts When Editing Entities in ASP.NET MVC?

Penyelesaian masalah entiti utama konflik dalam kemas kini entiti ASP.NET MVC

Apabila mengemas kini entiti di ASP.NET MVC melalui permintaan pos, anda mungkin menghadapi ralat berikut:

<code>Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value.</code>
Salin selepas log masuk
kesilapan ini timbul daripada cuba melampirkan entiti ke

manakala entiti lain dengan kunci utama yang sama sudah ada dalam graf objek konteks. DbContext cuba menggabungkan entiti, mengakibatkan konflik. DbContext

senario dan punca akar

Bayangkan mengedit entiti 'A' dalam pengawal. Get Action menggunakan

untuk memuatkan entiti. Tindakan pos kemudian cuba melampirkan dan mengemas kini. Walau bagaimanapun, jika entiti 'A' yang lain dengan kunci utama yang sama dimuatkan di tempat lain (mis., Semasa pengesahan akses pengguna), ini mewujudkan konflik penjejakan. Find()

Resolusi Menggunakan AsNoTracking() Penyelesaian yang paling berkesan adalah untuk mencegah DBContext daripada menjejaki entiti yang digunakan untuk pengesahan. Gunakan kaedah

:

AsNoTracking()

<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);
}</code>
Salin selepas log masuk
memastikan entiti pengesahan tidak mengganggu entiti yang dikemas kini.

AsNoTracking()

alternatif: kaedah

Detach() Pendekatan lain melibatkan melanggar entiti dari

sebelum pengubahsuaian menggunakan kaedah

. Ini menghalang konflik pengesanan. Walau bagaimanapun, sedar bahawa pemisahan mungkin memberi kesan kepada bahagian lain kod anda, dengan teliti mempertimbangkan implikasinya sebelum melaksanakan penyelesaian ini. DbContext

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan konflik utama entiti semasa mengedit entiti di ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan