1

我所有的应用程序都使用现场级的乐观并发执行实地乐观并发。是否有可能使用实体框架4.1(EF4.1)

这是通过跟踪原始数据库值并在原始值,更新值和当前数据库值之间执行3路比较以确定(a)用户更新的内容和(b)其他用户拥有的内容更新。

我的应用程序组连续的领域,并允许多个用户更新同一行中不同群体没有冲突。

这是因为它是常见的对相同的记录不同领域的合作不同的部门。

EF4.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(); 
} 
+0

“在这里执行你的逻辑”是一个很大的工作。更好的方法可能是实现一个新的提供者或提供者包装器。聪明的做法是根本不使用EF作为利弊远大的利弊。这通常是微软免费提供的(MVC3也是如此)坚持核心技术,如果你想让你的项目成功。 – Jack