【问题标题】:ObjectContext with Entity Framework 6 inserting duplicates on existing related entities具有实体框架 6 的 ObjectContext 在现有相关实体上插入重复项
【发布时间】:2015-11-15 00:01:14
【问题描述】:

我创建它是为了希望为一些人节省一些浪费的时间,或者在我的情况下是星期六。

问题如下:

我的主要实体在这种情况下被称为 case 并且在通过验证后,我会保存到对象上下文中,就像这样

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

问题是案件有相关事件。我正在添加一个名为 event 的上下文感知项目,我正在像这样通过上下文查找它

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

当代码运行时,我可以看到 model.Incident 有一个 EntityKey 并且状态为已添加,并且正在添加重复项。不仅如此,保存后的结论性引用是对新创建的记录。

我以为我马上就知道答案了,我只需要像这样预先通过 Attach 运行事件模型

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

错了。虽然它的 EntityState 没有改变,但它仍然输入了一个副本。除了这一次,生成的引用是原始事件,不再是副本。

【问题讨论】:

    标签: c# asp.net-mvc entity-framework


    【解决方案1】:

    解决方案是像这样使用 DBContext 完全转换并覆盖 ObjectContext

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

    尽管事件实体的 EntityState 未更改,但 ObjectContext 仍将其识别为新实体。 DBContext 似乎更能感知状态。

    我希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 1970-01-01
      • 2013-11-26
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多