title: Is TransactionScope implicitly applied until explicitly Completed?
body: <p>Consider the following methods.</p>
  
  <pre><code>DoA()
  {
    using (TransactionScope scope = new TransactionScope)
    {
      using (SqlConnection connection = new SqlConnection(connectionString))
      {
        connection.Open();
        SqlCommand command = new SqlCommand(query, connection);
        command.ExecuteNonReader();
  
        DoB();    
  
        scope.Complete();
      }
    }
  }
  
  DoB()
  {
    using (TransactionScope scope = new TransactionScope)
    {
      using (SqlConnection connection = new SqlConnection(connectionString))
      {
        connection.Open();
        SqlCommand command = new SqlCommand(query, connection);
        command.ExecuteNonReader();
  
        DoC();
  
        scope.Complete();
      }
    }
  }
  
  DoC()
  {
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
      connection.Open();
      SqlCommand command = new SqlCommand(query, connection);
      command.ExecuteNonReader();
    }
  }
  </code></pre>
  
  <p>If we call <code>DoA()</code>, do the subsequent interactions in <code>DoB()</code> and <code>DoC()</code> run in the context of <code>DoA()</code>'s transaction as it pertains to SQL Server? Does DoC() run in the context of both <code>DoA()</code> and <code>DoB()</code>'s transactions?</p>
  
  <p>(Or am I grossly misunderstanding something?)</p>