因為需要知道資料更新的用戶和時間,所以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行的例外,

因為是對日專案,所以電腦是日文系統,截圖就這樣了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310687.html
上一篇:自動生成基于成員的操作?
