AsNoTracking() nedir, ne işe yarar?

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ı?

alattin alattin (17125)
5 yıl önce sordu

    Toplam 1 Cevap


    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.

    alattin alattin (17125)
    5 yıl önce cevaplandı

      üyelik gerektirir

      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