首页 > 后端开发 > C++ > 在ASP.NET MVC中编辑实体时,如何解决实体关键冲突?

在ASP.NET MVC中编辑实体时,如何解决实体关键冲突?

Linda Hamilton
发布: 2025-01-30 08:01:09
原创
520 人浏览过

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

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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板