2010-11-08 140 views
2

在我的應用程序有以下模式:.NET事務範圍塊第二交易

using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    Function1(); 
    Function2(); 
    Function3(); 
} 

我的一點改進是功能2調用連接到另一個數據庫的另一個功能......和交易變得分佈式和我一個例外。

有什麼辦法在我可以做一個數據庫調用不屬於當前事務的代碼?我在Function2中的代碼只是讀取......所以我不想成爲當前事務的一部分。

感謝,拉杜

回答

3

圍繞function2你可以用TransactionScopeOption.RequiresNew創建一個新的交易,從而迫使其加入自己的獨立的交易。由於只有一個資源(另一個數據庫)將在該事務中使用,因此不應分散。

+0

如果我創建第二個事務作用域爲TransactionScope.Suppress我是否丟失了父事務? – 2010-11-08 09:17:10

+0

@RaduD只在我預期的交易範圍內(但我想測試以確認這一點)。 – Richard 2010-11-08 09:19:13