ASP.NET MVC实体更新中的故障排除实体键冲突
在通过邮政请求中更新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>
而引起的,而另一个具有相同主键的实体已经存在于上下文的对象图中。 DbContext
试图合并实体,导致冲突。
DbContext
> 想象在控制器中编辑一个“ 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中文网其他相关文章!