بحث بعدی در مورد SqlConnection مربوط به Transaction هاست. به این معنی که گاهی مواقع لازم است که یک سری کار ها رو پشت سره هم اجرا بشن و در صورتیکه یکی از کار ها درست انجام نشد مابقی هم به حالت اولیه برگردد. به عنوان مثال وقتی شما می خواهین یک فاکتور رو ثبت کنین باید تمامی قلم های فاکتور نیز ثبت شوند و در صورتیکه حتی یکی از آنها انجام نشد باید ما بقی نیز RollBack شوند.

در دات نت ما یک کلاس داریم به نام SqlTransaction. برای ایجاد یک SqlTransaction شما باید وقتی Connection خود را باز کردید. با استفاده از دستور BeginTransaction روی object connection خود یک SqlTransaction ایجاد کنین:
کد:

SqlConnection cnn = new SqlConnection(ConnectionString);
SqlTransaction trans = null;
try
{
cnn.Open();
trans = cnn.BeginTransaction();
SqlCommand cmd = new SqlCommand("spInsertFactor",cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = trans;
/// rest of command configuration such as parameters and ....
cmd.ExecuteNonQuery();
trans.Commit();
}
catch(Exception ex)
{
if(trans != null)
trans.RollBack();
}

شما می توانید با استفاده از دستور Commit تمامی دستوراتی که از لحظه BeginTransaction تا فراخوانی Commit اجرا شده اند رو اعمال و یا با استفاده از RollBack تمامی تغییرات رو کنسل نمائید.