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

下一篇: Typed ASP.NET MVC with ADO.NET Entity Framework