2010-11-26 140 views
0

如何使用企業庫來處理範圍內的事務。我有3個存儲過程,我需要在一個範圍內執行。我不想使用System.Transaction名稱空間企業庫中的事務

+1

好的問題必須被問...... *爲什麼*你不想使用`System.Transactions`命名空間? – 2010-11-26 10:33:32

回答

0

您可以調用連接對象上的BeginTransaction方法來獲取DbTransaction對象。然後使用帶有DbTransaction的Entlib數據庫對象的重載。然而,這是一個巨大的痛苦管理。您需要手動創建和關閉至少一個連接,而不是依賴Entlib來做正確的事情,並且必須將DbTransaction對象傳遞給需要它的所有事物。

TransactionScope在這裏確實是正確的答案。如果你有一些阻礙情況真的阻止你使用它,這不是一些腦死的公司政策,我很想知道它是什麼。

+0

只是想到了另一種選擇。如果它總是以相同順序存在三個sprocs,那麼只需創建第三個sproc,以正確的順序爲你調用它們,然後在數據庫服務器中完全管理事務;新的sproc會做「Begin Trans exec sproc1 exec sproc exec sproc3 Commit Trans」或類似的東西(我的sql不是很好)。 – 2010-11-27 04:09:58