2012-12-20 68 views
1

我们需要按照与数据库相同的顺序来添加,修改或删除实体。在“SaveChanges”之前获取插入,更新和删除操作的正确顺序

我们使用下面的代码片断,通过覆盖ObjectContext类中的“SaveChanges”方法来获取已添加,修改或删除的不同实体。

的foreach(| EntityState.Modified |在 ObjectStateManager.GetObjectStateEntries(EntityState.Added ObjectStateEntry进入EntityState.Deleted))

{
//每个实体 操作}假设我们有两个数据库中的表A & B.这些是无关的。我们使用实体框架在这些表上执行以下操作。

  1. 插入新的行中的
  2. 更新的行在乙
  3. 插入新的行中的乙
  4. 更新在A中的行(不是一个插在步骤1)
  5. 删除在B中的行(不受影响在步骤中的行2 & 3)
  6. 插入在乙
  7. 一个新行插入新的行中的

在使用上面的代码片段时,我们注意到插入,更新和删除被分组在一起,即我们得到了1,3,6,7,2,4,5顺序。

它在这篇文章中提到(http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/d8448144-05dd-4c34-b93c-9336c3b62f6e/)没有确切的方法确定在“SaveChanges”之前完成的操作中的插入顺序。

以上代码片段是否提取了在数据库中执行这些操作的正确顺序。

如果此订单不正确,有没有其他方法可以获得正确的订单。

回答

0

不,您不能更改操作顺序。控制订单的唯一方法是分别运行每个操作(每次操作后请拨打SaveChanges)。

+0

除了改变操作顺序之外,我更关心在“SaveChanges”调用之前捕获正确的操作顺序。问题是我获得的订单是否是正确的。 – dkrish23

相关问题