我目前有一個方法,它讀取數據以確定是否需要更新,然後將更新推送到數據庫(注入依賴項)。該方法非常困難,我發現併發性相關的錯誤,即多個更新,因爲多個線程在第一次更新之前讀取數據。TransactionScope而不是使用鎖
我用鎖來解決這個問題,它工作的很好。我該如何使用TransactionScope來做同樣的事情?我可以嗎?它會鎖定另一個線程嗎?此外,我可以'鎖定'一個特定的'id',因爲我正在使用一個鎖(我保存一個Dictionary來存儲一個對象來鎖定每個id)?
我使用實體框架5,雖然它隱藏了一個存儲庫和工作單元模式。
ReadWriterLockSlim呢?如果你有多個讀取和少量寫入,它比鎖定要好得多。 (如何使TransactionScope線程安全?) – 2013-03-05 16:36:16
這將比只是鎖(+1)更好。但是,它不允許我在其他地方安全地處理數據,或者在另一臺機器上處理同一數據。 – ccook 2013-03-05 16:38:05
ReaderWriterLockSlim通常建議使用_允許不允許遞歸訪問,並且如果允許的話,允許編寫有問題的代碼,這是一種危險的情況。就像他解決的問題一樣危險,如果不是更多的話。 – 2013-03-05 16:38:07