SqlTransaction transaction = cnnGlobal.BeginTransaction(IsolationLevel.Serializable);//cnnGlobal is connection
try
{
SqlCommand cmdMaster = new SqlCommand(sql, cnnGlobal);//sql is sql command
cmdMaster.Transaction = transaction;
cmdMaster.ExecuteNonQuery();
SqlCommand cmdDetails;
for (int i = 0; i <>
{
cmdDetails = new SqlCommand(sql, cnnGlobal);
cmdDetails.Transaction = transaction;
cmdDetails.ExecuteNonQuery();
}
transaction.Commit();
transaction = null;
cmdMaster.Dispose();
cmdDetails.Dispose();
}
catch
{
if (transaction != null)
{
transaction.Rollback();
transaction = null;
}
}
other example :
static void Main(string[] args)
   {
       string insertQuery =
          @"INSERT TESTTABLE (COLUMN1, COLUMN2) " +
            "VALUES(@ParamCol1, @ParamCol2)";
       using (SqlConnection connection =
         new SqlConnection(connectionString))
       {
           using (SqlCommand command =
             connection.CreateCommand())
           {
               SqlTransaction transaction = null;
               try
               {
                   // BeginTransaction() Requires Open Connection
                   connection.Open();
                   transaction = connection.BeginTransaction();
                   // Assign Transaction to Command
                   command.Transaction = transaction;
                   for (int i = 0; i < 100; i++)
                       CommandExecNonQuery(command, insertQuery,
                         new SqlParameter[] {
                           new SqlParameter("@ParamCol1", i),
                           new SqlParameter("@ParamCol2", i.ToString()) });
                   transaction.Commit();
               }
               catch
               {
                   transaction.Rollback();
                   throw;
               }
               finally
               {
                   connection.Close();
               }
           }
       }
   }
