Veri bütünlüğünü korumak

Merhaba arkadaşlar ;

Yapmış olduğum projede bir sayfada 3 farklı tabloya etki eden 3 ayrı stored procedurum mevcuttu. Tabi bu tablolarım birbiriyle ilişki içerisinde ve projenin sağlıklı çalışabilmesi için ya 3 procedurun birden çalışması ya da hiçbirinin çalışmaması gerekiyor. Bu sorunu aşmak için TransactionScope’dan yararlandım. Bunun için öncelikle projenize using System.Transactions; kütüphanesini eklemeniz gerekiyor. Şimdi kodumuza geçelim 🙂

using (TransactionScope ts = new TransactionScope())
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringiniz"].ConnectionString);

SqlCommand komut1 = new SqlCommand();
SqlCommand komut2 = new SqlCommand();
SqlCommand komut3 = new SqlCommand();

komut1.Connection = connection;
komut2.Connection = connection;
komut3.Connection = connection;

connection.Open();

komut1.CommandText = "Procedurunuz1";
komut1.CommandType = CommandType.StoredProcedure;

komut2.CommandText = "Procedurunuz2";
komut2.CommandType = CommandType.StoredProcedure;

komut3.CommandText = "Procedurunuz3";
komut3.CommandType = CommandType.StoredProcedure;
komut3.Parameters.AddWithValue("@parametre", parametre);

try
{
komut1.ExecuteNonQuery();
komut2.ExecuteNonQuery();
komut3.ExecuteNonQuery();
ts.Complete();
lblDurum.Text = "İşlem başarıyla gerçekleştirildi";
}
catch (Exception)
{
lblDurum.Text = "İşlem gerçekleştirilemedi.";
}
finally
{
connection.Close();
}

Hepinize kolay gelsin iyi çalışmalar. Rahatlayıp bir bardak su içebiliriz :))

Bu işler stresli işler 🙂