乐趣区

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 的乐观并发,在访问量很大的时候应该使用其他技术处理并发问题。

退出移动版