标签:core ef Entity ADO NET Data
因为需要知道数据更新的用户和时间,所以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行的异常。
因为是对日项目,所以电脑是日文系统,截图就这样了。
标签:core,ef,Entity,ADO,NET,Data 来源: https://www.cnblogs.com/lyhmzsm/p/15400486.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。