ObjectContext与实体框架6在现有相关实体上插入重复项
我正在创造这个想要挽救一些浪费时间的人,或者在我的情况下是一个星期六。
问题如下:
我的主要实体在这个实例中被称为case,并且在通过验证后,我将保存到对象上下文中,如此
context.AddToCases(caseModel);
context.SaveChanges();
问题在于案件发生了相关事件。 我添加了一个名为事件的情境感知项目,我正在通过上下文来查找
caseModel.Incident = context.Incidents.SingleOrDefault(i => i.IncidentNumber == jumpIncidentNumber);
随着代码的运行,我可以看到该模型。事实上有一个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似乎有更多的状态意识。
我希望这可以帮助别人。
链接地址: http://www.djcxy.com/p/33543.html上一篇: ObjectContext with Entity Framework 6 inserting duplicates on existing related entities