Entity Framework 小知識(三)

零、樂觀併發

在單服務器上運行的站點,爲了防止出現髒讀現象,咱們通常使用Lock語句關鍵字,可是若是在分佈式站點上使用Lock語句關鍵字是不起做用的,由於程序鎖住了服務器1數據庫實例,但服務器2並不知道服務器1已被鎖住,這樣依然會出現髒讀現象。這時咱們就用到了EF的樂觀併發。數據庫

EF中解決併發有兩種方式:服務器

  1. 利用併發Token;
  2. 利用行版本的方式

代碼以下:併發

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的樂觀併發,在訪問量很大的時候應該使用其餘技術處理併發問題。
相關文章
相關標籤/搜索