2011-07-07 172 views
3

如何在实际删除实体之前更新实体中包含的审核信息?我正在研究从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." 

谢谢!

回答

2

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

  • 迭代都在context.ObjectStateManager.GetObjectStateEntires记录和存储实际状态每次进入一些临时数据结构。
  • 将所有条目设置为未更改状态,但首先要修改的条目除外。
  • 呼叫SaveChanges首次
  • 迭代所有国家再次条目并设置他们的状态存储在临时数据结构
  • 呼叫SaveChanges再次

你应该做的整个操作TransactionScope