Kısaca NOLOCK'dan bahsedecek olursak tablo üzerinde CRUD işlemi yapıldığında ilgili satırda eğer bir işlem yapılıyorsa yada TRANSACTİON başlatılıp henüz kapanmamış ise o satırı sql kilitler ve sonucu bize döndürmez.Bundan dolayı o satırı kilitlemiş olur,yani lock olmuştur,o satırla ilgili herhangi bir sonuç döndürmez.
Böyle bir sorun ile karşılaşmak istemiyorsak tabloların yanına nolock ekleriz bu sayede ilgili satırı lock olsa bile bize sonucu döndürür.
Tsql Nolock kullanımı: SELECT * FROM Address nolock
Entity Framework'de Nolock kullanımı biraz farklı TransactionScope kullanarak yapıyoruz.
Entity Framework Nolock kullanımı;
//Transaction ayarlarını tanımlıyoruzç
Entity Framework'de Nolock kullanımı biraz farklı TransactionScope kullanarak yapıyoruz.
Entity Framework Nolock kullanımı;
//Transaction ayarlarını tanımlıyoruzç
var tsOptions = new System.Transactions.TransactionOptions(); //Transaction IsolationLevel'i ReadUncommitted yapıyoruz,burası önemli nolock işlemini tanımlıyoruz burada. tsOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted; using (var tScope = new System.Transactions.TransactionScope(System.Transactions. TransactionScopeOption.Required, tsOptions)) { using (var context = new MyEntityConnection()) { //kod bloğunuz... }
//Transaction işlemini kapatıyoruz.
tScope .Complete();
}