0
Entity Framework sorgularda AsNoTracking() ne işe yarar? Ne zaman ve hangi durumda AsNoTracking() kullanılmalıdır? Performans açısından AsNoTracking kullanmak veya kullanmamak arasında bir fark var mı?
0
Entity'ler üzerindeki işlemler sürekli izlenir. Bir Entity'de değişiklik, güncelleme yapıldıysa SaveChanges() metodu ile bu değişiklikler veritabanına yansıtılır. Bu şekilde entity üzerindeki değişiklik kalıcı hale getirilir.
Fakat biz herzaman entity'ler üzerinde değişiklik yapmayız. Çoğu zaman sadece okumaya dayalı işlemler yaparız. Varsayılan olarak Enitity Framework üzerinde yaptığımız işlemlerde bu "takip" aktif durumdadır. Çoğu zamanda okuma işlemi yaptığımız için bu performans kaybına yol açar.
İşte bu durumda izleme yapmadan, sadece okunabilir işlemler için AsNoTracking kullanılır. AsNoTracking kullanıldığında Entity üzerinde değişiklik var mı yok mu Context tarafından izlemenmez.
Örnegin Kisiler adında bir entity'miz var. Bunu ekranda listeleyeceksek
context.Kisiler.AsNoTracking().ToList()
şeklinde sorgumuzu oluşturmak performans artışı sağlayacaktır.
Normalde
context.Kisiler.ToList()
yaptığımızda izleme devrede olacaktır. Bu da gereksiz kaynak kullanımı demektir.
AsNoTracking, Entity Framework de performans optimizasyonu için kullanılabilecek güzel bir ifadedir. Sadece okuma gerektiren işlemlerde güvenle kullanılabilir.
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol
25 Ocak 2018 uzmanim.net güncellemesi
30 Haziran 2017 uzmanim.net güncellemesi
26 Aralık 2016 uzmanim.net güncellemesi
08 Eylül 2016 uzmanim.net kural ihlali yapan kullanıcılar ve yaptırımlar