.NET

2009-06-02 28 views
0

我剛剛使用.NET中的事務進行begon,並且遇到問題。在一個函數中(在我的DAL中)我使用一個事務範圍。在函數結束時,我觸發Complete()函數。.NET

現在我對這個函數也有一個測試,它也使用了一個事務範圍。在這個測試函數的最後,我不會觸發complete()函數,這樣我的測試就不會用測試數據填充數據庫。這似乎工作正常。

我現在的問題是,如果我在我的測試函數中觸發complete(),事務似乎會完成兩次。這似乎是合乎邏輯的,因爲我觸發了Complete()兩次......但有沒有辦法避免這種情況?有沒有辦法兩次觸發Complete()函數而不執行兩次作用域......當然,必須有一種方法來嵌套事務...?

回答

0

我的理解是,如果您不處理調用完成交易將滾動,也TransactionScope supports nested transactions。混合搭配,你應該能夠回滾你的測試所做的所有工作。

0

嘗試使用RequiresNew選項創建TransactionScope的內心:

new TransactionScope(TransactionScopeOption.RequiresNew) 
+0

Thx,我會先看看這些嵌套事務和TransactionScopeOption。我嘗試了RequiresNew,它解決了我以前的問題,但是這引發了新的問題。 – 2009-06-02 08:20:10