سلام
دوست عزیز برای اجرای دستورات داخل یک تراکنش (Transaction) می تونید به صورت کد زیر عمل کنید:

            try
{
//Declare:
using (SqlConnection conn = new SqlConnection("ConnStr"))
{
//Opening:
conn.Open();
//Creating Transaction:
SqlTransaction trans = conn.BeginTransaction();
/*for(i=0;i<=x,i++) //use this for multi Executing TSQL
{*/
//Geting Commanad Instance
SqlCommand cmd = conn.CreateCommand();
//Geting Or Generating TSQL Code:
string TSQL = GetTSQL();
cmd.CommandText = TSQL;
//Set Transaction to cmd (Imortant):
cmd.Transaction = trans;
//Executing:
int res = cmd.ExecuteNonQuery();
//} //End Of for
//Commiting (Very Imprtant):
trans.Commit();
//Closing Connection:
conn.Close();

MessageBox.Show("Process Completed");
}
}
catch (Exception ex)
{
MessageBox.Show("Process Failed! \n" + ex.Message);
}


البته این چند نکته رو هم باید بگم"
1- من داخل دستور شما Return می بینم که این دستور در اجرا به این شکل مجاز نیست
اگه منظورتون اینه که می خواید از ادامه اجرا جلو گیری کنید می تونید اونو با دستور زیر جایگزین کنید که هم مجاز هست و هم یک پیغام کاربر پسند بدون درد سر دارید

RAISERROR (N'رکورد - جدول - شخص و ... موجود نیست!',18,1)


2- شما نباید داخل دستورتون GO داشته باشید و اگه باید یک دستور اجرا بشه و بعد دستور بعدی می تونید دستور رو داخل همون تراکنش و به صورت مجزا اجرا کنید
اگه تعداد زیاد باشه با حلقه اجرا کنید که من نحوه استفاده از حلقه رو هم به صورت کامنت شده تو کد گذاشتم (البته برای بار اول اگه کد ها مشوش به نظرتون اومد می تونید کامنت را حذف کنید)
3- برای RollBack شما کاری انجام نمی دید به محض وقوع خطا کد به catch منتقل می شه و چون conn داخل using قرار گرفته به صورت اتوماتیک بسته و از بین میره که موجب Rollback شدن تراکنش میشه
شما هم برای Rollback دستی کافیه کانکشن رو ببنید و تراکنش خودش رول بک می شه
اگه مشکلی بود بازم در خدمتم