EntityFramework AsNoTracking Nedir?

EntityFramework AsNoTracking Nedir?

Merhaba arkadaşlar, bugün .Net Core projem için Generic Repository örneği yapıyordum. Github üzerinden örnek kodlara bakarken Entity sorgularındaki AsNoTracking ifadesini gördüm. Yaklaşık 4 yıldır MVC projelerinde görev alıyorum. AsNoTracking ifadesini şimdiye kadar fark edemediğim için üzüldüm, şimdi bunu keşfettiğim için de mutluyum. 🙂 Sizin de bundan faydalanmanızı istediğim için çok geciktirmeden blogumda paylaşmak istedim.

Bildiğiniz üzere EntityFramework ile bir select işlemi yaptığınızda, gelen data içeriğini güncelleyip SaveChanges yaparsak değişiklikler veritabanına yansır. Bu işlemi her zaman istemiyor olabilirsiniz. Bu durumda AsNoTracking ifadesi yardımımıza koşuyor. Bu ifade ile yaptığımız entity sorgusu sadece okumalıktır. Üzerinde değişiklik yapıp SaveChanges yaptığımızda veritabanında hiçbir değişiklik olmaz. Bu da bize minimum bellek kullanımı ve optimum performans sağlayacaktır. Çok hoj 🙂

AsNoTracking Performansı

AsNoTracking ifadesinin performansı ne kadar etkilediğine görsel olarak birlikte bakalım:

AsNoTracking Kullanımı

Bu ifadenin kullanımı ise aşağıda göreceğiniz üzere çok kolay:

1
context.Set<TEntity>().AsNoTracking();

Diğer bir kullanım yönetimi ise DbContext ayarlarından yapılabilir. Bu da tüm queryler için geçerli olacaktır:

1
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
Kaynaklar:
  1. http://blog.staticvoid.co.nz/2012/entity_framework_and_asnotracking/
  2. https://docs.microsoft.com/en-us/ef/core/querying/tracking
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×