【问题标题】:Updating Entity Before Deleting删除前更新实体
【发布时间】:2011-09-30 13:18:49
【问题描述】:

如何在实际删除实体之前更新包含在实体中的审计信息?我正在研究从 DbContext 派生的类。

我尝试将状态更改为已修改,然后设置更新的信息,然后调用 base.SaveChanges(),然后将其标记为已删除。当我在设置更新信息后尝试调用 SaveChanges 时出现问题。似乎关系的其他对象被标记为已删除,我得到了这个异常:

"A relationship from the 'ChildrenEntity' AssociationSet is in the 'Deleted' state. Given    multiplicity constraints, a corresponding 'ParentEntity' must also in the 'Deleted' state." 

谢谢!

【问题讨论】:

    标签: c# entity-framework ef-code-first


    【解决方案1】:

    是的,这是有问题的,您可能找不到比在数据库中使用删除前触发器更好的方法。如果您想在应用程序中处理它,工作方式将是:

    • 迭代context.ObjectStateManager.GetObjectStateEntires 中的所有记录,并将每个条目的实际状态存储到某个临时数据结构中。
    • 将所有条目设置为未更改状态,但要首先修改的条目除外。
    • 第一次拨打SaveChanges
    • 再次迭代所有状态条目并将它们设置为存储在临时数据结构中的状态
    • 再次拨打SaveChanges

    你应该在TransactionScope做整个操作

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多