İçeriğe geç

C# Entity Framework Transaction Kullanımı

C# ‘ta EntityFramework (EF) ile Transaction blokları

Transaction’lar yazılımcıların belli bir noktadan sonra olmazsa olmazları halinde yer alır.

Peki nedir bu transaction kavramı?

Bir tabloda işlem yapıyor olun. Bu işlem ister insert, ister update, ister ise delete işlemi olsun. Bu noktada eğer yapacağınız işlem farklı bir veya bir kaç noktayı etkileyecek ise ve bu noktaların bir tanesinde dahi hata almanız durumunda yapılan tüm işlemleri (o esnada) geri almak istiyorsanız kesinlikle ihtiyaç duyacağınız bir metoddur Transaction kavramı.

İşlemlere hiç başlamadan önce bir Transaction açılır ve sizin kod tarafındaki işleminiz (döngü veya ardı ardına gelen farklı insert/update/delete işlemleri olabilir) bitip de siz transaction’ı kapatana (commit) kadar o tabloya farklı uygulamalardan veya noktalardan gelen tüm talepler kısa süreli beklemeye alınır ve sizin işleminiz daha uzun sürecek ise timeout verilerek geri çevrilir. İşte bu da, aynı tablo veya kayıt üzerinde birden fazla kişinin aynı anda işlem yapmasının önüne geçmiş olur.

Peki nasıl kullanılır bu transaction denen meret 🙂


using(ContextEntites context = new ContextEntites())
{
using(var transaction = context.Database.BeginTransaction())
//using blokları arasında transaction'ımızı açtık ve artık transaction'ımız bir commit() fonksiyonunu kullanana kadar işlem yaptığımız tabloyu kilitleyecek.
{
try
{
//Yapılacak işlem/leri burada yazdık. Standart c# mantığı ile sql de yapacağımız herşey olabilir...
}
catch (Exception ex)
{
transaction.Rollback(); //Burada bir hatayla karşılaşılması durumunda yukarıdaki using'i ilk açtığımız noktaya geri dönmesini ve işlemlerin hiç yapılmamış gibi algılanmasını sağladık...
throw;//ve hatamızı da fırlatarak uygulamamızın hata vermesini de sağlamış olduk...
}

transaction.Commit();
//Eğer uygulamamız hata almadan buraya kadar ulaşmış ise demek ki herşey yolunda gitti ve tabii ki bu durumda Commit() diyerek işlem tamamlandı artık tabloları açabilirsiniz komutunu vermiş oluyoruz...
}
}

Umarım açıklayıcı olmuştur… 🙂

4.3 3 votes
Article Rating
Tarih:Asp.Net - C#Microsoft SQL Server
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x