1

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

这通过跟踪原始数据库值并在原始值、更新值和当前数据库值之间执行 3 路比较来确定 (a) 用户更新了什么和 (b) 其他用户更新了什么。

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

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

EF4.1似乎只支持非常基础的基于整行的并发模型!这意味着当没有任何冲突时,用户将面临无休止的冲突......

是否可以覆盖内置行为?

4

1 回答 1

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();
}
于 2012-09-11T08:07:15.623 回答