具有entity framework6的ObjectContext在现有相关实体上插入重复项

我正在创造这个以希望为一些人节省一些浪费的时间,或者在我的情况下为星期六。

问题如下:

我的主要实体在这个实例中称为case,在通过validation时,我会保存到对象上下文,就像这样

context.AddToCases(caseModel); context.SaveChanges(); 

问题是案件发生了相关事件。 我正在添加一个名为事件的上下文感知项,我正在通过上下文查找

 caseModel.Incident = context.Incidents.SingleOrDefault(i => i.IncidentNumber == jumpIncidentNumber); 

随着代码运行,我可以看到model.Incident有一个EntityKey并且添加了状态,并且正在添加重复项。 不仅如此,保存后的结论参考是新创建的记录。

我以为我立刻知道了答案,我只需事先通过Attach运行事件模型

 context.Attach(incident); caseModel.Incident = incident; 

错误。 虽然它的EntityState没有变化,但它仍然是重复的。 除此之外,结果参考是原始事件,不再是重复。

解决方案是使用像这样的DBContext强制转换并覆盖ObjectContext

 if (model.Incident != null) { DbContext dbContext = new DbContext(context, true); dbContext.Entry(model.Incident).State = EntityState.Unchanged; } 

尽管事件实体的EntityState未更改,但ObjectContext仍将其识别为新的。 DBContext看起来更像是状态。

我希望这可以帮助别人。