你的位置:首页 > 软件开发 > ASP.net > 关于Entity Framework中的Attached报错的完美解决方案终极版

关于Entity Framework中的Attached报错的完美解决方案终极版

发布时间:2015-07-16 13:02:22
之前发表过一篇文章题为《关于Entity Framework中的Attached报错的完美解决方案》,那篇文章确实能解决单个实体在进行更新、删除时Attached的报错,注意我这里说的单个实体,指的是要更新或删除的实体不包含其它实体(比如导航属性就包含其它实体),也就是简单POC ...

之前发表过一篇文章题为《关于Entity Framework中的Attached报错的完美解决方案》,那篇文章确实能解决单个实体在进行更新、删除时Attached的报错,注意我这里说的单个实体,指的是要更新或删除的实体不包含其它实体(比如导航属性就包含其它实体),也就是简单POCO对象;但如果不是呢?那么那篇文章里的方法在一定程度上不起作用了,仍会报错,我开始也想不明白,明明通过IsAttached函数判断要更新的实体并未Attached,但进行Attaching时但仍然报错说有相同Key,开始还以为是MS的BUG,后经过多次反复调试发现,报错是对的,因为他报的错并不是我当前要更新的实体,而是该实体中关联的实体,代码与演示报错如下:(仅是演示代码)

public class A{  public get='_blank'>string a{get;set;}  public string b{get;set;}  public string c{get;set;}  public virtual B b{get;set;}}public class B{  public string x{get;set;}  public string y{get;set;}  public string z{get;set;}}var a1= dbContext.Set<A>().Single();a1.a="test1";dbContext.SaveChanges();dbContext.Detach(a1);//从缓存中移除a1实体;var a2= dbContext.Set<A>().AsNoTracking().Single();a2.a="test2"; dbContext.Set<A>().Attach(a2); //报错,说B相同的KEY已经有AttacheddbContext.Entry(entity).State = EntityState.Modified;dbContext.SaveChanges(); 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:关于Entity Framework中的Attached报错的完美解决方案终极版

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录