2016-03-27 14 views
1

C# öğesinde Entity Framework kullanarak işlem kullanarak veri kaydettiğim bir senaryo buldum. Tablo kilitlenmezken kilitlenir. Veri kaydetmek için aşağıdaki kodu kullanıyorum. işlemin kadarEntity Framework'de işlem yapılmadığında tablo kilidi var mı?

tblCharge obj = new tblCharge(); 
obj.Plan = "DD"; 
obj.TotalAmount = 1500; 

// Opening transaction 
using (System.Data.Common.DbTransaction transaction((IObjectContextAdapter)dbContext).ObjectContext.Connection.BeginTransaction()) 
{ 
    dbContext.tblCharges.Add(obj); 
    dbContext.SaveChanges(); 
    transaction.Commit(); 
} 

Ben verilerini kaydetmeye ne zaman alacağım önce taahhüt ve SQL Server tablodan seçim sorgusu yapmak, bu göstermez sonuçları işlemek.

İşlemi kullanırken tabla kilitlemenin gerçekleşmemesi mümkün mü?

+0

Bu ** bir tablo kilidi değil - yalnızca eklediğiniz satırlar kilitleniyor. Tablonun geri kalanı hala seçim için mevcut - sorun yok. Bu kilitleme davranışı ** amacı ** ve iyi bir sebepten dolayı - atlatmaya çalışmayın! –

+0

Yardımlarınız için teşekkürler. –

cevap

1

İlişkisel veritabanındaki işlemlerin tamamı, işlem gerçekleştirilinceye kadar diğer işlemlere görünmeyen veritabanında yapılan değişikliklerin gerçekleştirilmesidir. Bu nedenle, sorunuza cevap vermek için, işlemin gerçekleştirilmesinden önce sonuçların başka sorgularda görünmesi mümkün değildir, çünkü bu işlemin ne olduğunun ana tanımını ihlal eder.

+0

Ama nokta, seçim için diğer tüm bilgilerin mevcut olması. Bunu yapmak için zaten var mı? –

+0

@AlinaDilshad: Veriler ** IS **, işlem ** işlemiş olduğu anda ** seçilebilir ve bu nedenle veriler gerçekten iyi saklanır. İşlemden önce, veriler henüz veritabanında değil ..... ve bu yüzden bu işlemden önce onu seçmek istememelisiniz! –

İlgili konular