什么时候在ADO.NET中编写的db事务实际上开始了?

时间:2010-01-26 11:50:10

标签: c# .net sql-server ado.net transactions

数据库密集型应用程序的关键之一是使事务尽可能短。

今天我想知道这笔交易何时才会开始:

using (SqlConnection sqlConnection = new SqlConnection(connectionString))
    {
        sqlConnection.Open();
/*(1)*/ SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(IsolationLevel.ReadUncommitted); 

        //Perform some stuff
        //...

/*(2)*/ using (SqlCommand command = new SqlCommand(sqlQuery, sqlConnection, sqlTransaction))  
        {
             //Some other stuff
             //...
             try
             {
                 /*(3)*/sqlCommand.ExecuteNonQuery();
                 //More irrelevant code
                 //...
                 sqlCommand.CommandText = otherQuery;
                 sqlCommand.ExecuteNonQuery();
                 sqlTransaction.Commit();
             }
             catch(Exception)
             {
                 sqlTransaction.Rollback();
                 throw;
             }
        }
  }

在步骤(1),(2)或(3)中?理想情况下,它应该在第3步中。

1 个答案:

答案 0 :(得分:6)

事务从第3点开始,第一次在连接上执行命令。

您可以使用SQL Server Profiler验证这一点。