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