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

Dav*_*art 2 .net c# 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;
             }
        }
  }
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*lph 6

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

您可以使用SQL Server Profiler进行验证.