2010-04-26 44 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

相关问题