1

我们需要按照在数据库上执行的顺序来添加、修改或删除实体。

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

foreach (ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted)中的ObjectStateEntry条目) {
// 对每个实体的操作}

假设我们在数据库中有两个表 A 和 B。这些是无关的。我们使用实体框架对这些表进行以下操作。

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

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

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

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

如果这个顺序不正确,有没有其他方法可以得到正确的顺序。

4

1 回答 1

0

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

于 2012-12-20T11:05:17.720 回答