Merhaba arkadaşlar,
bu yazım da sizlere AsNoTracking() konusundan bahsedeceğim. Basit bir kod ama yerinde kullanıldığında performans bakımından gerçekten de verim sağlayacağımız birşey. Kullanımı basit. Lambda sorgu yazarken tablo adından sonra AsNoTracking yazarak kullanabiliyoruz.
var liste = entity.tbl_User.AsNoTracking().ToList();
Şimdi diyeceksiniz ki yazarsak ya da yazmazsak ne olur arada ki fark nedir?
Olay şu arkadaşlar, AsNoTracking kullanırsak yaptığımız select üzerinde herhangi bir update işlemi uygulayamıyoruz. Yani değişikliği yaptıktan sonra entity.SaveChanges() diyerek update işlemi yapamayacağız. Tabi ki her sorgumuz da update işlemi yapmadığımız içinde bize gerçek anlamda kar sağlıyor.
Görüşmek üzere,
Osman KURT
C# Yazılım Uzmanı
Merhaba arkadaşlar,
Entity framework kullanan bir çok arkadaş belki karşılaşmıştır. Bazı tablolar var ki ne yaparsanız yapın bir türlü entity model içine dahil edemezsiniz.
Geçen günlerde benim de başıma geldiği için yazma gereği duydum. Arkadaşlar eğer bir tablo entity model içine dahil edilemiyorsa bunun ilk sebebi tablonun bir primary key alana sahip olmamasıdır. Dİyebilirsiniz ki her tablo zaten dahildir. Ben şahidim değil :) olmadığı durumları da gördü bu gözler.
Eee Osman efendi bunun çözümü nedir diye soracaksınız. Basit arkadaşlar PK yoksa bile PK olarak kullanabilecek bir alan için nulleble alanını null geçilemez olarak ayarlamak gerekir. Eğer gerekli ayarlamayı yaparsak Entity bu alanı readonly olarak key atayacak ve tabloyu modelinize dahil edecek. Siz de istediğiniz gibi kullanabilirsiniz.
Kolay gelsin,
Osman KURT
Yazılım Uzmanı C# Uzmanı
Entity framework kullanırken işimize en çok yarayacak sorgulardan biride Select yaparken Order çekmek.
Normal kullanımda tek yazacağımız zaman;
var Detay = (from a in entity.KonsolLog orderby a.KonsolLogID descending select a).ToList();
Çoklu kullanımı ise;
var Detay = (from a in entity.KonsolLog select a).OrderByDescending(m => m.KonsolLogID).ThenBy(m => m.Tarih).ToList();
Görüşmek üzere
Osman KURT
Yazılım Uzmanı