title: TransactionScope not rolling back transaction
body: <p>Here is the current architecture of my transaction scope source code.  The third insert throws an .NET exception (Not a SQL Exception) and it is not rolling back the two previous insert statements.  What I am doing wrong?</p>
  
  <p><b>EDIT:</b>  I removed the try/catch from insert2 and insert3.  I also removed the exception handling utility from the insert1 try/catch and put "throw ex".  It still does not rollback the transaction.</p>
  
  <p><b>EDIT 2:</b> I added the try/catch back on the Insert3 method and just put a "throw" in the catch statement.  It still does not rollback the transaction.</p>
  
  <p><b>UPDATE:</b>Based on the feedback I received, the "SqlHelper" class is using the SqlConnection object to establish a connection to the database, then creates a SqlCommand object, set the CommandType property to "StoredProcedure" and calls the ExecuteNonQuery method of the SqlCommand.</p>
  
  <p>I also did not add Transaction Binding=Explicit Unbind to the current connection string.  I will add that during my next test. </p>
  
  <pre><code>public void InsertStuff()
  {
      try
      {
          using(TransactionScope ts = new TransactionScope())
          {
              //perform insert 1
              using(SqlHelper sh = new SqlHelper())
              {
                  SqlParameter[] sp = { /* create parameters for first insert */ };
  
                  sh.Insert("MyInsert1", sp);
              }
  
              //perform insert 2
              this.Insert2();
  
              //perform insert 3 - breaks here!!!!!
              this.Insert3();
  
              ts.Complete();            
          }
      }
      catch(Exception ex)
      {
          throw ex;
      }
  }
  
  public void Insert2()
  {
      //perform insert 2
      using(SqlHelper sh = new SqlHelper())
      {
          SqlParameter[] sp = { /* create parameters for second insert */ };
  
          sh.Insert("MyInsert2", sp);
      }
  }
  
  public void Insert3()
  {
      //perform insert 3
      using(SqlHelper sh = new SqlHelper())
      {
          SqlParameter[] sp = { /*create parameters for third insert */ };
  
          sh.Insert("MyInsert3", sp);
      }
  }
  </code></pre>