我的项目针对 SQL Server 2012 使用 EF(使用自跟踪模板测试版本 4,使用默认模板测试版本 5,所有数据库优先)。数据库表定义了每个rowversion
( timestamp
) 列。
在它的核心中使用 EF,这意味着我的数据库更新代码看起来是这样的:
using (var db = new MyContext())
{
//db.Entry(myInstance).State = EntityState.Modified;
db.SaveChanges();
}
不会触发任何rowversion
警报。我运行并行客户端,每个客户端读取相同的记录,对其进行更改,然后每个将其写入数据库。接受所有更新,不应用并发。
我是否必须为我的更新命令使用存储过程(使用 where 子句说明我的rowversion
值)才能让 EF 确认“内置”并发性,或者是否有另一种方式(配置、特定方法调用)来使我的代码工作?