【问题标题】:Setting the database connection when using a TransactionScope使用 TransactionScope 时设置数据库连接
【发布时间】:2010-04-26 21:05:17
【问题描述】:

数据库连接是否必须在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.

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

问题是您需要在创建 TransactionScope 之后创建与数据库的连接还是可以在之前完成?

【问题讨论】:

  • 你能详细说明一下吗?

标签: vb.net database-connection transactionscope


【解决方案1】:

如果您希望 SqlConnection 在事务下,则需要在 TransactionScope 下创建它。

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

【讨论】:

  • 这是否等同于先创建连接,然后创建范围,然后在范围内调用 connection.EnlistTransaction(Transaction.Current)。我希望如此,因为我确实需要首先创建一个连接,然后将其传递给创建事务范围的各种方法......我希望这些方法能够在现有事务范围中加入现有连接,所以我m 不在嵌套事务范围内创建新连接,导致它们升级为分布式事务(因为会涉及多个连接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2011-01-23
  • 2016-01-05
相关资源
最近更新 更多