db first乐观并发场景
从db加载数据,同时他人也从db加载并修改保存,我们在他人进行修改之后再去保存,导致脏读,保存会出现DbUpdateConcurrentyException。
解决办法
- 1 表添加RowVersion列,类型timestamp
- 2 update edm
- 1.edm->update from db->refers you table
- 2.set RowVersion Concurrenty Mode为 fixed
ef api 在进行update时会把rowversion加入到where子句中,如
update tablename set colname = newvalue where id = @id and rowversion =@rowversion 。如果 rowversion值与db中不一样则抛出异常。在进行修改的时候,RowVersion的值会自动修改。
code first并发控制
加入Concurrenty属性即可,测试时,可先让一个程序跑完,再让打断点的调试程序去继续,就会抛异常。
或者是修改数据库中的值。