首頁 > 後端開發 > C++ > 在ASP.NET MVC中編輯實體時,如何解決實體關鍵衝突?

在ASP.NET MVC中編輯實體時,如何解決實體關鍵衝突?

Linda Hamilton
發布: 2025-01-30 08:01:09
原創
474 人瀏覽過

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

ASP.NET MVC Entity更新中的故障排除實體鍵衝突

在通過郵政請求中更新ASP.NET MVC中的實體時,您可能會遇到以下錯誤:>

這個錯誤是由於試圖將實體附加到
<code>Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value.</code>
登入後複製
而引起的,而另一個具有相同主鍵的實體已經存在於上下文的對像圖中。

試圖合併實體,導致衝突。 DbContextDbContext場景和根本原因

> 想像在控制器中編輯一個“ A”實體。 GET ACTION使用加載實體。 然後,郵局試圖將其附加和更新。 但是,如果另一個具有相同主鍵的“ A”實體在其他地方加載(例如,在用戶訪問驗證期間),則會產生跟踪衝突。

Find()>使用

分辨率 AsNoTracking()>最有效的解決方案是防止DBContext跟踪用於驗證的實體。 使用方法:

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>
登入後複製

>替代:AsNoTracking()方法

> >另一種方法涉及在使用Detach()>方法修改之前將實體脫離。這樣可以防止跟踪衝突。 但是,請注意,分離可能會影響您的代碼的其他部分,因此在實施此解決方案之前仔細考慮其含義。

>

以上是在ASP.NET MVC中編輯實體時,如何解決實體關鍵衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板