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