2013-10-23 88 views
1

我想知道嵌套兩個交易是否是一個好的做法?比如用TransactionScope包裝我的NHibernate事務爲了測試的好處(確保數據庫回滾了測試中所做的所有更改)。嵌套交易測試

另一種選擇是將我插入到內存中的實體保留在內存中,並在測試結束時刪除它們。

哪一個更好?

回答

1

首先,nhibernate不支持嵌套事務!

如果已經打開一個TransactionScope,則另一方不會創建新的事務。如果您只使用事務作用域,它將爲連接創建一個新事務。

如果您然後在範圍內打開一個事務,這將仍然與nhibernate一起使用。

回到你的問題,它幾乎取決於你在TransactionScope中創建的對象的數量。如果它變得太多,你只會簡單地發送數據庫的事務日誌。除此之外,我想說這個概念是完全正確的。

還有一點很重要,如果您使用TransactionScope,並且您使用nhibernate創建了多個會話/事務,則作用域可能會切換到需要MSDTC在目標服務器上運行的分佈式事務,否則它將失敗。