2010-04-26 45 views
0

數據庫連接是否必須在TransactionScope內設置?使用TransactionScope時設置數據庫連接

或者我可以在ctor中設置它,然後通過實例方法創建一個TransactionScope

編輯:例如

Public Sub New() 
    Dim conn = new SqlConnection(...connection string) 
Public Sub SomeClassMethod() 
    using ts as new TransactionScope 
     //conn has already been initialized 
     //so, here you can set commands, ExecuteDataSet, etc. 

VS

Public Sub New() 
    //nothing here 
Public Sub SomeClassMethod()  
    using ts as new TransactionScope 
     conn = new SqlConnection(...connection string) 
     set commands, ExecuteDataSet, etc. 

的問題是你需要你創建一個TransactionScope後創建到數據庫的連接還是可以做之前?

+0

你能詳細說一下嗎? – 2010-04-28 09:34:32

回答

0

如果您希望SqlConnection處於事務中,則需要在TransactionScope下創建它。

using(TransactionScope scope = new TransactionScope()) 
{ 
    SqlConnection x = new SqlConnestion("...."); 
    x.Open(); 
    ....your code... SQlCommands etc.... 
    x.Close(); 
    scope.Complete(); 
} 
+0

這相當於先創建連接,然後是範圍,然後在範圍內調用connection.EnlistTransaction(Transaction.Current)。我希望如此,因爲我真的需要創建一個單一連接FIRST,然後將它傳遞給創建事務範圍的各種方法......並且我希望這些方法能夠在現有事務範圍內徵用現有連接, m不會在嵌套事務處理作用域中創建新連接,導致它們升級爲分佈式事務(因爲會涉及多個連接)。 – Triynko 2010-05-21 17:46:37

相關問題