Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

Entity Framework AsNoTracking Kullanımı

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ı

Entity Framework İncelikleri

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 Çoklu Orderby Kullanımı

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ı

Entity Framework İstenilen Türde Liste Döndürme

Son projelerimde sıkça kullanmakta olduğum entity framework’ de yeni yeni şeyler öğrendim ve bunlardan birini sizler için paylaşmak istedim.
DB’den çektiğimiz bir veriyi liste olarak almak için var bir değişken tanımlıyoruz ve entity cümlemizi yazarak db’den gelen listeyi değişkenimize aktarıyoruz. Daha sonra forech döngüsü ile kullanmak istediğimiz formata getiriyoruz kendi listemize dolduruyoruz.


Örnek Kullanım;

List<Konsol> konsollist = new List<Konsol>();
var Detay = (from a in entity.KonsolLog orderby a.KonsolLogID descending select a).ToList();
foreach (var item in Detay)
{
konsollist.Add(new Konsol { KonsolLogID = item.KonsolLogID, Icerik = item.Icerik });
}
return konsollist;


Şimdi bu olayımızda yapılan 2 ana işlem var. Öncelikte Db’ye bağlanarak çektiğimiz verileri değişkene aktarıyoruz . İkinci olarak çektiğimiz bütün veri sayısı kadar tek tek dolaşarak yeniden listeye ekleme yaptırıyoruz. Buda verinin boyutuna göre hatrısayılır bir zaman alıyor ve kod israfı yaratıyor. Programcılar arasında kod ameleliği. Gelin yeni öğreneceğimiz sistem üzerinde bu kodun daha kolay kullanımı nasıl oluyor hep birlikte görelim.

Örnek kodumuzun kolay kullanımı alt kısımda ki gibi;

var konsollist = (from a in entity.KonsolLog orderby a.KonsolLogID descending select new Konsol { KonsolLogID = a. KonsolLogID, Icerik = a. Icerik }).ToList();
return konsollist;


Görmüş olduğunuz gibi yeni uygulanan kod ile tek seferde işlemi tamamlıyoruz. Emin olun büyük ölçekli projlerde bu konu sizinde canınızı yakabilir.



Görüşmek üzere
Osman KURT
Yazılım Uzmanı

ASP.Net MVC Entity Framework Select, Insert, Update ve Delete işlemi

Microsoftbazı projeleine yıllar boyu destek verirken bazı projelerinide elinin tersi ile itiyor ve kısa sürede öldürebiliyor. Bunlara örnek vermek gerekirse XP :)

XP uzun yıllar hayatımızda olan bir işletim sistemi. Belki de belli bir zamana kadar microsoft'un bizlere kazandırdığı en değerli ürünüydü ama herşey gibi onunda sonu geldi tabi. Diğer türlü öldürdüğü yazılımlarına teknolojilerine gelirsek mesleğimle ilgili olan linq teknolojisi. Zamanın öğreneilmesi gereken bir teknolojiydi ama microsoft ani bir kararla artık bu teknolojiyi update etmeyeceğini ve yoluna entity framework ile devam edeceğini açıkladı.

Benimde gerçekten kullanmaktan zevk aldığım bir teknoloji her ne kadar arka kısımda bazı "?" işaretleri olsada kullanmakatan zevk alıyorum diyebilirim.

Bu yazımda size kısaca insert, update ve delete işlemlerinden bahsedeceğim. İlk olarak insert işleminden başlayalım isterseniz.

Firmalar adında bir tablomuz olsun ve bu tablomuzun FirmaAdi alanına 1 adet kayıt eklemek isteyelim.

Firmalar FrAdd = new Firmalar();
FrAdd.FirmaAdi = fir.FirmaAdi;
entity.Firmalar.Add(FrAdd);
entity.SaveChanges();

İşte bu kadar basit. Tablomuzu türetiyoruz verimizi eşitliyoruz hangi tablomuza kayıt atacağımızı belirledikten sonra Entity SaveChanges diyerek kayıt işlemimizi tamamlıyoruz. Unutmamamız gereken nokta her işlemden sonra Entity.SaveChanges(); mutlak suretle yazmamaız aksi takdirde yapılan işlem gerçekleşmeyecek.

Peki update kodumuz nasıl olacak.

Firmalar FirmaDetay = (from a in entity.Firmalar where a.FirmaID == id select a).FirstOrDefault();
FirmaDetay.FirmaAdi = fir.FirmaAdi;
entity.SaveChanges();

Bu işlemimiz de bu kadar. İlk yapılan update yapılacak verimizi select yapmak istediğimiz alandaki değişiklikleri eşitledikten sonra Entity.SaveChanges(); diyerek yapılan işlemi DB ye Execute etmek.

Kısaca silme kodumuz ise aynı şekilde select işlemi yapıldıktan sonra,

var FirmaDetay= (from a in entity.Firmalar where a.FirmaID== id select a).FirstOrDefault();
entity.Firmalar.Remove(FirmaDetay);
entity.SaveChanges();


Bu işlemimiz de son bulduğuna göre artık yazımızı sonlandırmanın zamanı geldi select işlemi hem Update hemde Delete kod bloglarında olduğu için yeniden yazma gereği duymadım. O kısımdan bakabilirsiniz.

Tekrar görüşmek üzere,

Osman KURT
Yazılım Uzmanı