在transactioncope中打开sql连接很重要

时间:2009-12-29 19:45:18

标签: .net transactionscope sqlconnection

我创建了一个sqlconnection,CN1。然后打开CN1。稍后在代码中有一个transactioncope。如果我在这个CN1连接上执行sql命令,这是在事务中吗?

代码看起来像这样;

SqlConnection cn1 = new SqlConnection();
cn1.Open(); //connection opened when there is no ambient transaction.
...

using(TransactionScope scope = new TransactionScope())
{
  SqlCommand cmd; //a typical sql command.

  ...

  cmd.ExecuteNonQuery(); //Is this command within transaction?
  ...
}

2 个答案:

答案 0 :(得分:9)

必须在TransactionScope中打开连接,以确保连接在事务中注册。

这可以在this MSDN示例中的connection.Open上方的评论中找到。

答案 1 :(得分:5)

  1. 不,在事务中不执行命令
  2. 在作用域内打开连接或使用SqlConnection实例的EnlistTransaction方法。见my answer in different thread