我所有的应用程序都使用字段级乐观并发。
这通过跟踪原始数据库值并在原始值、更新值和当前数据库值之间执行 3 路比较来确定 (a) 用户更新了什么和 (b) 其他用户更新了什么。
我的应用程序将字段分组在一行中,并允许多个用户更新同一行中的不同组而不会发生冲突。
这是因为不同部门处理相同记录的不同字段是很常见的。
EF4.1似乎只支持非常基础的基于整行的并发模型!这意味着当没有任何冲突时,用户将面临无休止的冲突......
是否可以覆盖内置行为?
我所有的应用程序都使用字段级乐观并发。
这通过跟踪原始数据库值并在原始值、更新值和当前数据库值之间执行 3 路比较来确定 (a) 用户更新了什么和 (b) 其他用户更新了什么。
我的应用程序将字段分组在一行中,并允许多个用户更新同一行中的不同组而不会发生冲突。
这是因为不同部门处理相同记录的不同字段是很常见的。
EF4.1似乎只支持非常基础的基于整行的并发模型!这意味着当没有任何冲突时,用户将面临无休止的冲突......
是否可以覆盖内置行为?
是否可以覆盖内置行为?
它只是您的应用程序逻辑,您可以在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();
}