基於一些週期性併發傳入的數據,我正在執行一個操作,該操作會將新行插入表中,或者更新同一個表中的現有行。它是插入還是更新行取決於現有行的狀態。因此,此操作的結果將受此操作的先前運行的影響,並影響後續運行。我需要使用事務或鎖定或其他方法確保原子性/隔離性。 Entity Framework似乎有很多選擇和注意事項(我也是一個全面的數據庫資源的新手),我不知道我應該朝哪個方向前進。 TransactionScope,BeginTransaction,環境事務? Serializable或RepeatableRead? SaveChanges和AcceptAllChanges?我甚至需要做特別的事情嗎?可以添加新行的事實使我特別擔心幻影行,儘管我幾乎不明白這意味着什麼。任何關於這個問題的指導將不勝感激。實體框架中的併發,原子和隔離
1
A
回答
1
報價:
悲觀併發(鎖定)
如果您的應用程序確實需要防止 併發場景數據的意外丟失,一種方法是使用數據庫鎖。 這被稱爲悲觀併發。例如,在從數據庫中讀取 行之前,您請求鎖定爲只讀或更新 訪問。如果您鎖定一行以進行更新訪問,則不允許其他用戶鎖定該行以進行只讀或更新訪問,因爲 他們將獲得正在更改過程中的數據的副本。 如果您將一行鎖定爲只讀訪問權限,其他人也可以將其鎖定爲 只讀訪問權限,但不能用於更新。管理鎖具有一些缺點。編程可能很複雜。它需要大量的數據庫管理資源,並且隨着應用程序用戶數量的增加(即,其 不能很好地擴展),會導致性能問題 。由於這些原因,並不是所有的數據庫管理系統都支持悲觀併發。實體框架提供了 沒有內置的支持,本教程不會告訴你如何執行它 。
樂觀併發
的替代悲觀併發是樂觀併發。 樂觀併發意味着允許發生併發衝突, 然後在適當的情況下做出適當的反應。例如,John運行 「部門編輯」頁面,將英文 部門的預算金額從$ 350,000.00更改爲$ 100,000.00。 (約翰·管理一個 競爭的部門,要騰出資金用於自己的 部門。)*
有在本教程中這兩種模式的代碼示例。
相關問題
- 1. 實體框架併發
- 2. 實體框架ObjectContext:併發
- 3. 實體框架6和悲觀併發
- 4. 實體框架死鎖和併發
- 5. 實體框架遊離對象合併
- 6. 實體框架和並行
- 7. 實體框架分離實體和相關實體
- 8. 分離實體框架poco和objectcontext
- 9. Xamarin原生實體框架
- 10. 原始SQL實體框架
- 11. 實體框架的悲觀併發性
- 12. 實體框架的悲觀併發性
- 13. 使用離子框架的原生Dropdown
- 14. 如何實現Moles隔離框架?
- 15. 實體框架 - 樂觀併發問題
- 16. 併發性問題實體框架
- 17. 實體框架7腳手架原名
- 18. DB2實體框架事務隔離「WITH UR」
- 19. 實體框架5加實體和子實體與
- 20. 實體框架的交易和SQL Azure的默認隔離級別
- 21. 實體框架中的遞歸實體分離
- 22. 在實體框架中保存分離的實體6
- 23. 具有多個表/實體的實體框架併發
- 24. SQL Server的「用戶架構分離」和實體框架問題
- 25. 從實體框架中的父實體獲取子實體c#
- 26. 與GMAP和離子框架
- 27. 實體框架插入子實體
- 28. 實體框架 - 添加子實體
- 29. 實體框架:刪除子實體
- 30. 實體框架 - 保存子實體