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 抛出异常
-
![]()
-






浙公网安备 33010602011771号