欢迎光临
我的个人博客网站

ADO.NET Entity Data Model的乐观锁

因为需要知道数据更新的用户和时间,所以DB表结构已经设计了【CreateID】【CreateDate】【UpdateID】【UpdateDate】。

网上查到的Sqlserver数据做排他处理有两种方式:

A.Timestamp型/rowversion型。通过加一个这种类型的列,可以简单实现。

B.ConcurrencyCheck。指定列上加上这个属性,更新时会自动比较这个项目的值是否已经被改变。

详细参考:

https://docs.microsoft.com/zh-cn/ef/core/modeling/concurrency?tabs=data-annotations

https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-rp/concurrency?view=aspnetcore-5.0&tabs=visual-studio#conflict-detection-in-ef-core

 

但是在ADO.NET Entity Data Model中,ConcurrencyCheck设置了之后发现不起作用,

·”数据库中的并发标记值将与原始值进行比较”这个比较的SQL没有生成。

最后经过多次测试,发现在ADO.NET Entity Data Model生成的可视化面板中,可以直接指定项目的属性【`同时实行模式】为Fixed就可以了,

Savechanges的时候会比较变更前的值和数据库的值是否一样,如果一样才会将新值更新进去,否则会出一个更新数据为0行的异常。

ADO.NET Entity Data Model的乐观锁

 因为是对日项目,所以电脑是日文系统,截图就这样了。

赞(0) 打赏
未经允许不得转载:张拓的天空 » ADO.NET Entity Data Model的乐观锁
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏