我有兩個事務範圍,一個在另一個範圍內。我很想知道內部事務處理作用域是否會在提交後回滾,而外部事務處理作用域未完成。如果外部事務作用域未完成,內部事務作用域是否會回滾?
31
A
回答
20
由於它們是嵌套的,內部事務將回滾。
這不是全部內容,取決於您如何創建嵌套事務,但默認情況下會回滾。
This article深入瞭解TransactionScope
,應該回答大部分問題。
被分配與否是無關緊要的。
68
它取決於您使用範圍選項啓動嵌套事務處理範圍。
如果您使用默認選項TransactionScopeOption.Required
,則嵌套作用域將與外部作用域在同一事務中登記,因此當外部作用域回滾內部作用域時,即使它已調用Complete
也會回滾。
但是,如果您使用TransactionScopeOption.RequiresNew
,則嵌套範圍將開始其自己的事務並與外部範圍分開完成,因此即使外部範圍回滾,也不會回滾。
如果您使用TransactionScopeOption.Suppress
那麼嵌套作用域將不會參與外部事務並且將以非事務性方式完成,因此不構成將在外部事務回滾時回滾的工作的一部分。
+0
完美答案:) – 2017-06-14 12:06:04
相關問題
- 1. 內部回滾事務回滾外部
- 2. Peewee:外部事務不回滾內的事務(保存點)
- 3. TransactionScope:如果內部作用域失敗,如何使外部作用域繼續?
- 4. Hibernate事務回滾是否工作?
- 5. Grails的/春REQUIRES_NEW回滾外部事務
- 6. 函數作用域內部和外部數組之間的作用域泄漏?
- 7. 內部事務更改對外部事務不可見
- 8. WMQ事務回滾使用.net顯式事務不起作用
- 9. 如何防止NServiceBus回滾事務或部分事務?
- 10. Commiting外部事務
- 11. 回滾不起作用coldfusion事務
- 12. 事務回滾不起作用
- 13. @事務性回滾不起作用
- 14. JPA事務回滾不起作用
- 15. Hibernate + Spring事務回滾不起作用
- 16. Oracle事務回滾不起作用
- 17. 使用領域持久對象(錯誤:只能從事務內部完成領域數據更改)
- 18. 如何在C#中實現內存事務作用域?
- 19. NHibernate事務內部的讀操作
- 20. 使用事務日誌回滾事務
- 21. 在原始查詢中將事務回滾事務回滾不起作用
- 22. 域名事件是否應該在交易內部或外部引發?
- 23. 無法回滾GAE部署事務
- 24. MySQL事務和回滾如何工作?
- 25. Rails事務不會回滾
- 26. ActiveRecord事務不會回滾
- 27. Spring事務不會回滾
- 28. Android - 如果內部類是服務,GC是否會收集我的外部類?
- 29. ui-select2內部指令綁定到外部作用域
- 30. 如果事務回滾,CompassGps會回滾嗎?
@Frantisek提到了分佈式事務。我如何知道即時通訊使用分佈式事務? – Tebo 2010-12-21 09:49:58
我想我錯了。使用TransactionScope,你可能不需要dtc來使它工作。閱讀http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx:「雖然嵌套作用域可以加入根作用域的環境事務,但在嵌套作用域中調用Complete對根作用域沒有影響,只有從根作用域到最後一個嵌套作用域的所有作用域投票提交事務時,事務纔會被提交。「 – 2010-12-21 09:53:03
我相信你知道這件事,但談論TransactionScope時,術語「內部事務」和「嵌套事務」是恕我直言,因爲實際上沒有嵌套事務,只是嵌套TransactionScopes。如果您選擇TransactionScopeOption.Required,它只是一個大事務,而使用TransactionScopeOption.RequiresNew有兩個完全獨立的事務,但它們並不嵌套在(封閉)嵌套事務的意義上。 – 2017-01-31 10:47:17