加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 实体框架检测到冲突的更改.尝试使用相同的密钥

发布时间:2020-12-16 07:39:32 所属栏目:asp.Net 来源:网络整理
导读:我有实体User,它有几个一对一和多对多的关系和Identity主键,以及在每个请求上创建的通用存储库. 我有一个带有客户端和服务器验证的注册表单,我决定关闭客户端验证以测试服务器在这种情况下的行为方式. 我关闭了客户端验证来测试注册表单并输入一些无效值,所
我有实体User,它有几个一对一和多对多的关系和Identity主键,以及在每个请求上创建的通用存储库.

我有一个带有客户端和服务器验证的注册表单,我决定关闭客户端验证以测试服务器在这种情况下的行为方式.

我关闭了客户端验证来测试注册表单并输入一些无效值,所以我回到表单说我有一些错误,在我修复后我得到了非常有趣的错误
他说:

_context.SaveChanges(); //towing the error below:

Conflicting changes detected. This may happen when trying to insert multiple entities with the same key

这对我来说很奇怪,因为我分离了实体用户,但是当我发现这个How to clean-up an Entity Framework object context?时
所以相反只分离用户实体我决定尝试清理完全运行该代码的对象上下文:

var objectStateEntries = this.objectContext
                             .ObjectStateManager
                             .GetObjectStateEntries(EntityState.Added);

    foreach (var objectStateEntry in objectStateEntries)
    {
        if(objectStateEntry.Entity != null)
           this.objectContext.Detach(objectStateEntry.Entity);
    }

所以在那之后一切运作良好,我没有得到冲突的变化检测到错误,但我仍然想知道为什么会出现这种情况,可能有人可能解释一下?

解决方法

你可能会找到你的答案 here:

context.ObjectStateManager.GetObjectStateEntries(System.Data.Entity.EntityState.Added| System.Data.Entity.EntityState.Unchanged);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读