Menyelesaikan masalah "melampirkan entiti jenis 'ModelName' gagal dalam Action Asp.net MVC EDITS
Kesilapan "melampirkan entiti jenis 'ModelName" yang gagal dalam ASP.NET MVC biasanya timbul ketika cuba mengemas kini rekod pangkalan data yang berada dalam keadaan terpisah. Mesej ralat ini biasanya menunjukkan ketidakcocokan utama utama, menunjukkan entiti dianggap sebagai baru dan bukannya rekod yang sedia ada. Penyelesaiannya melibatkan dengan betul menguruskan keadaan entiti dalam rangka entiti.Masalah ini sering permukaan semasa edit tindakan pos. Entiti pada mulanya diambil, ditandakan sebagai "diubahsuai," tetapi panggilan kaedah berikutnya (sebelum kemas kini negeri) mungkin secara tidak sengaja refetch entiti yang sama, dengan itu melepaskannya.
Kunci untuk menyelesaikannya adalah menghalang penjejakan entiti yang tidak diingini sebelum mengubah keadaannya. Kaedah Rangka Kerja Entiti
menyediakan penyelesaian. AsNoTracking()
dalam kaedah AsNoTracking()
yang diubah suai: canUserAccessA
<code class="language-csharp">private bool canUserAccessA(int aID) { int userID = WebSecurity.GetUserId(User.Identity.Name); // Disable tracking to prevent state conflicts int aFound = db.Model.AsNoTracking().Where(x => x.aID == aID && x.UserID == userID).Count(); return (aFound > 0); }</code>
, kaedah AsNoTracking()
kini mengambil semula entiti tanpa mengesan perubahan. Ini menghalang gangguan dengan keadaan entiti semasa tindakan edit pos, dengan berkesan menghapuskan ralat "melampirkan entiti". Ini memastikan bahawa tugasan negeri canUserAccessA
seterusnya berfungsi dengan betul. Modified
Atas ialah kandungan terperinci Kenapa 'melampirkan entiti jenis 'ModelName' gagal berlaku dalam tindakan mengedit ASP.NET MVC, dan bagaimanakah ia dapat diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!