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行的異常。

 因為是對日項目,所以電腦是日文系統,截圖就這樣了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM