![](/img/trans.png)
[英]SaveChanges() for multiple dbcontext with TransactionScope in Entity Framework 4.1
[英]Are there uses for TransactionScope in Entity Framework 4 in situations that do not span multiple context objects?
我正在做我的第一個使用EF4的大型項目,並且在實現某些業務場景時一直在考慮並發情況。 我了解EF通過將實體屬性上的“並發模式”設置為“固定”來建立對開放式並發的支持。 在大多數情況下,這似乎已足夠。 我想知道的幾件事:
在首先驗證一個實體不存在的情況下,然后插入該實體。 從技術上講,有人可以在我的驗證和插入之間的瞬間插入該實體。 用EF處理這種情況的最佳實踐是什么? 自然,我在考慮兩種可能的解決方案,悲觀並發或處理將要發生的唯一約束異常。
我試圖記住,如果在SQL中發出Begin Transaction / Commit Transaction塊是否會自動鎖定所涉及的表,這意味着它將迫使我在上文中提到過悲觀的情況。 如果是這樣,將這兩個EF操作包裝到TransactionScope中是否會獲得相似的結果?
如果TransactionScope不會強制悲觀並發,那會是什么?
不使用多個上下文時為什么要使用TransactionScope
? 好吧,也許您需要在一次事務過程中獲得服務器生成的密鑰(請考慮SCOPE_IDENTITY
)。 通常,當您多次調用SaveChanges()
必須成組成功或失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.