在單服務器上運行的站點,爲了防止出現髒讀現象,咱們通常使用Lock語句關鍵字,可是若是在分佈式站點上使用Lock語句關鍵字是不起做用的,由於程序鎖住了服務器1數據庫實例,但服務器2並不知道服務器1已被鎖住,這樣依然會出現髒讀現象。這時咱們就用到了EF的樂觀併發。數據庫
EF中解決併發有兩種方式:服務器
代碼以下:併發
public class EfDbContext : DbContext { public EfDbContext() { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EfDbContext>()); } public virtual void OnModelCreating(DbModelBuilder modelBuilder) { // 利用併發Token modelBuilder.Entity<Users>().Property(t=>t.Name).IsConcurrencyToken(); // 利用行版本 modelBuilder.Entity<Users>().Property(t=>t.Name).IsRowVersion(); } }
注:在併發量不是很大的時候能夠使用EF的樂觀併發,在訪問量很大的時候應該使用其餘技術處理併發問題。