其实我得到了例外
检测到关系'DataModel.FK_TableName_RelateTableName'的角色'TableName'发生冲突的变化
从ObjectContext调用ApplyChanges方法时。我不知道这个例外是什么。我只是想知道这个例外的原因。
答案 0 :(得分:8)
如果您尝试两次获取同一实体的外键关系,我认为您会遇到这些异常。一个简单的例子就是:
var tn = ctx.TableName.Where(t => t.TableNameId == 1).First();
var rel = new RelateTableName {TableName = tn, TableNameId = 2};
ctx.RelateTableName.AddObject(rel);
在这里你可以看到我将TableNameId属性设置为2,但将TableName属性设置为TableNameId为1的对象 - 因此实体框架无法确定哪一个是放入数据库的正确关系。
答案 1 :(得分:0)
这个问题背后的实际原因是,当我们选择任何SaveChanges时,需要正确调度上下文,以便继续下一个SaveChanges,将另一条记录插入到具有不同外键的同一项目上的DB中。您只需在“context.SaveChanges()”
之后添加以下行context.Entry(您的对象).State = System.Data.Entity.EntityState.Detached;
这将解决冲突。具有相同上下文的多次插入会导致冲突。