EF写了个简单的框架,在把查询出来的数据修改回去时,报了ObjectStateManager 中已存在具有同一键的对象这样一个错误,寻寻觅觅终于找到了最终的解决方案。

ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同

键的多个对象。

网上有资料说是这样先改成未附加状态db.Entry(entity).State = EntityState.Detached,再进行修改。但是我是在基类里面写的方法,传过来的泛型的T,而且我没有把所有的Model都继承自BaseModel,因此T中拿不到主键,也就没办法去数据库中Find这个对象,直接更改更改后的实体对象的状态依然会报错。

所以,这个方法行不通。那只能另想办法了,查找资料之后发现,这是由于查询之后的数据,EF默认帮我们缓存了起来,放在了DbContext上下文中,我们在修改的时候,需要执行操作db.Entry(entity).State = EntityState.Modified;  需要再次的向上下文中附加该实体时候,EF发现该实体已经附加过了,所以会报这个错。所以自然也就有了解决办法。

解决方法,在查询的时候加上asNoTracking() 即可。。。这样,EF就不会缓存查询出来的对象了!


Update方法照样这样写:

 public virtual bool Update(T entity){db.Entry(entity).State = EntityState.Modified;return true;}

  

转载于:https://www.cnblogs.com/baiyunchen/p/3947502.html

Entity Framework5.0运行时错误ObjectStateManager 中已存在具有同一键的对象相关推荐

  1. EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象...

    今天编码过程中遇到这个问题,用EF 更新数据库,将组织好的数据传递到ef的上下文中,本以为附加上去更新,一切就ok了,不过事实证明没这么顺利 ----------------------------- ...

  2. ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象...

    在使用EF更新数据的时候,报如下错: ObjectStateManager 中已存在具有同一键的对象.ObjectStateManager 无法跟踪具有相同键的多个对象. 原因是:在EF上上下文中不允 ...

  3. 【升级U8+】升级U8错误:数据库中已存在名为 ‘VoucherCustomerInfo‘ 的对象

    [升级错误] C:\U8SOFT\Admin\SQLFILE8610\Main\Ufdata\Structure\Data_STR_PB_mix_NL.sql 错误信息: -2147217900 数据 ...

  4. mysql8.0 服务移除_MySQL8.0中已移除的特性,功能

    1. 说明 本文所说的都是已经从MySQL8.0中删除的特性,如果是从低版本升级到8.0的应用,如果使用到了这些特性应该注意避免使用这些特性或找到替代的特性.如:对于MySQL5.7和8.0的主从环境 ...

  5. 论文阅读:(2020版)A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法

    A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法 目录 A Survey on Deep Learning f ...

  6. 如何用php新增税金一列_根据新税改增加税额,税率时,增加字段保存报错ORA-01430: 表中已存在要添加的列...

    版本号:7.0 业务场景(如下): 预期效果(如下): 实际效果(如下)(包括错误,异常): 异常信息(异常类型:System.Exception) 异常提示: 异常信息:添加业务实体的时候出错. 导 ...

  7. .NET Core 3.0 Preview 6中对ASP.NET Core和Blazor的更新

    我们都知道在6月12日的时候微软发布了.NET Core 3.0的第6个预览版.针对.NET Core 3.0的发布我们国内的微软MVP-汪宇杰还发布的官翻版的博文进行了详细的介绍.具体的可以关注&q ...

  8. [转]另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]

    本着代码重用,减少变量的创建,希望参数能够重复使用 DataBase db = new DataBase();         SqlParameter[] prams ={ db.MakeInPar ...

  9. .NET(C#) Internals: .NET Framework中已使用的设计模式

    --适合有一定设计模式基础和.NET基础的人阅读. 写在前面 "设计模式"我一向是敬而远之的态度,不会去写这方面的文章,原因有二:第一,要想写好设计模式的文章太难,需要笔者丰富的经 ...

最新文章

  1. [YTU]_2639 ( 改错题:类中私有成员的访问)
  2. 深度学习笔记 第四门课 卷积神经网络 第三周 目标检测
  3. mysql dba 试题_mysql dba面试题及答案.docx
  4. 2010 本年度认证目标:坐沙发的熊
  5. 前端学习(3346):设计模式之工厂模式3
  6. 网页设计中色彩的应用
  7. NABCD模型--软件工程
  8. 路由器内部到底是啥结构?不懂就不算网工人
  9. weevely生成木马文件上传获取靶机中的flag文件
  10. 台式电脑接路由器步骤_无线路由器连接台式电脑的方法
  11. mysql实验训练2 数据查询操作_实验训练2:数据查询操作.doc
  12. 最新B站优秀C4D教程汇总(超干)
  13. 【成为架构师课程系列】作为一名大数据架构师该掌握的技能清单:
  14. visio2017里让字体大小随框自动调节步骤
  15. 为什么注销计算机用户登录,为什么我的电脑开不了机?一点用户登陆就显示正在注销了....
  16. 转载:如何与老板谈加薪
  17. babylonjs 按照自定义路径运动
  18. 7-1 海军节鸣礼炮 (5 分)
  19. 2022年6月电子学会Python等级考试试卷(二级)答案解析
  20. 商品管理系统——获取商品分类的分组以及属性

热门文章

  1. 获取0~100之间的随机数
  2. centos 7上创建samba服务器
  3. 进程和线程相关小知识
  4. Visual Studio 2008 无法切换到设计视图
  5. echarts柱状图x轴 label一行超过设置的字数换行
  6. 【李宏毅2020 ML/DL】P2 Regressio - Case Study
  7. Vue版todolist案例
  8. 基于CSS3实现元素宽度向两侧延伸
  9. jQuery源码研究分析学习笔记-静态方法和属性(10)
  10. URI、URL和URN的关系