是否可以使用Entity Framework 4.1(EF4.1)实现字段级乐观并发

时间:2012-09-11 06:43:59

标签: entity-framework concurrency entity-framework-4.1 optimistic-locking

我的所有应用程序都使用字段级乐观并发。

这可以通过跟踪原始数据库值并在原始值,更新值和当前数据库值之间执行3方式比较来确定(a)用户更新的内容以及(b)其他用户已更新的内容

我的应用程序将字段连续分组,并允许多个用户更新同一行中的不同组而不会发生冲突。

这是因为不同部门共同处理相同记录的不同字段。

EF4.1似乎只支持基于整行的非常基本的并发模型! 这意味着当没有用户时,用户会遇到无休止的冲突......

是否可以覆盖内置行为?

1 个答案:

答案 0 :(得分:3)

  

是否可以覆盖内置行为?

您可以在SaveChanges覆盖中实现它的应用程序逻辑。您只需要三组值:

public override int SaveChanges() {
    foreach (var entry in ChangeTracker.Entries()
                                       .Where(e => e.State == EntityState.Modified) {
        // Original values:
        DbPropertyValues originalValues = entry.OriginalValues;
        // Current values:
        DbPropertyValues currentValues = entry.CurrentValues;
        // Database values:
        DbPropertyValues dbValues = entry.GetDatabaseValues();

        // Perform your logic here
    }

    return base.SaveChanges();
}