EFcore的併發處理

1.併發定義:

多個線程同時執行一個操作,同時修改數據庫的數據,導致數據不一致的情況

2.併發處理

一般情況下,併發處理無非兩種,第一種就是加鎖:鎖的類型,按照思想方法來分,可以分爲兩種。1.悲觀鎖。2,樂觀鎖。第二種處理就是使用隊列,將線程入隊列,一個一個執行,隊列一定要是線程安全的隊列。

3.悲觀併發和樂觀併發

悲觀併發:兩個線程同時修改數據庫的同一張表,A進入修改,B就不能修改,只能等待A改完,B才能進入修改

樂觀併發:A修改,B也可以修改,如果在A保存之後B再保存他的修改,此時系統檢測到數據庫中記錄與B剛進入時不一致,B保存時會拋出異常,修改失敗

樂觀併發的基本出發點是:當保存數據的時候抱着一種樂觀的態度,不期望發生併發衝突,即使萬一發生併發衝突,也能捕捉到衝突異常,然後根據策略解決衝突,而解決衝突的方式一般分爲Client wins(以後操作者爲贏) 和 Store wins(以先存儲的數據爲贏)。

4.EF如何控制併發

EF使用的是樂觀併發,每一次操作表 字段TimeStamp的值都會改變,而每次對錶做操作時都會比對對象的TimeStamp值與數據庫中表的值是否相同,是則操作表,否 ,則拋出異常給客戶端或是刷新對象狀態後重新保存,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章