EF 通过时间戳实现自带 乐观锁
DBContext:
public MyDb () : base("name=conn") { Database.SetInitializer<MyDb>(null); } protected override void OnModelCreating (DbModelBuilder modelBuilder) { //这句是不要将EF生成的sql表名不要被复数 就是表名后面不要多加个S modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } public DbSet<TestTable> TestTable { get; set; }
Entity:
public class TestTable { public int Id { get; set; } public string Name { get; set; } /// <summary> /// 数据库中对应时间戳的字段, 一定要加注解, 否则ef不进行解读 /// </summary> [Timestamp] public byte[] timespan { get; set; } }
Table:
测试:
- 数据库中此时的数据
- 两份测试代码
-
模拟并发同时修改一条数据
-
数据 9 修改成功
-
数据 10 抛出异常
-
-