Merhaba,
Bu makalede lazy ve eager loading olaylarını anlatmaya çalışacağım
Lazy Loading bir sorguda çektiğimiz verilerin bağlı oldu verileri getirmesine denir.Bu durum yerine göre kullanılır.Mesela hangi toptancıdan nekadar ürün alıyoruz, bunu öğrenmemiz lazım.
Bu örnekte Northwind veritabanını kullanacağım.
Bunun için aşağıdaki kodu yazarız.
-
NorthwindEntities nt
= new NorthwindEntities
();
-
foreach (var item in nt.Suppliers)
-
{
-
Console.WriteLine("Şirket Adı : {0} {1}", item.CompanyName, item.Products.Count);
-
}
Fakat sonuç aşağıdaki gibi olur.

Peki neden böyle bir sonuçla karşılaştık ? Bunun cevabı çok açık Entity Framework geliştirilirken bu tip durumlar düşünülüp Lazy Loading false olarak gelmiştir.
Yani Suppliers tablosuna bağlı olan Products tablosu yuklenmemiştir.Dolayısıyla Products tablosu Count edilemedi.
Lazy Loading i aktif hale getirmek için aşağıdaki kod işimizi görmektedir.
-
NorthwindEntities nt
= new NorthwindEntities
();
-
foreach (var item in nt.Suppliers)
-
{
-
if (!item.Products.IsLoaded)
-
item.Products.Load();
-
Console.WriteLine("Şirket Adı : {0} {1}", item.CompanyName, item.Products.Count);
-
}
Buradaki IsLoaded property si Products tablosunun yüklenip yüklenmediğini söylemektedir.Load metodu ise Products tablosunun yüklenmesini sağlamaktadır.
Bu koddan sonra istenileni yapmış olduk.

Fakat bu sonuçta ise performans kaybı yaşanmaktadır.SQL Server Proifiler ı açıp buna birlikte şahit olabiliriz.Yukarıdaki kodu çalıştırdığımız zaman sql sorgu yağmuruna tutulmaktadır.

Burada analiz çok önemlidir. Biz sadece 2 kolonu kullanıyoruz ama bütün tabloyu çekiyoruz.Bu işlem oldukça külfetli oluyor.Bu yüzden Eager Loading metodunu kullanacağız.
Bunun için aşağıdaki kodu yazmak yeterli olacaktır.
-
NorthwindEntities nt
= new NorthwindEntities
();
-
var sorgu
=from c
in nt.
Suppliers.
Include("Products") select
new {c.
CompanyName,c.
Products.
Count}
-
foreach (var item in sorgu)
-
{
-
Console.WriteLine("Şirket Adı : {0} {1}", item.CompanyName,item.Count);
-
}
Buradaki Include metodu sayesinde Products tablosununa içerisine almasını sağladık ve daha fazla performans kazanmak için sorgu yazıp sadece kullnacağımız alanları çektik.
Bu koddan sonra SQL Server Proifiler ı tekrar kontrol edelim.

Gerçekten fark edilebilir bir sonuç çıktı karşımıza 
Bu makalemde sizlere Lazy ve Eager Loading i anlatmaya çalıştım. Başka bir makalede görüşmek üzere…
devamını oku…
Daha önce size buradan bir seminerin haberini duyurmuştum seminerin iptal olduğu haberi mailime geldi yazı aşşağıdaki gibi…
”
Daha önce 03 Aralık 2009 Perşembe günü gerçekleştireceğimizi duyurduğumuz “Entity Framework – İyi, Kötü ve Çirkin” adlı Web seminerimizi, konuşmacımızın rahatsızlanmasından ötürü iptal etmek zorunda kalıyoruz. Belirleyeceğimiz yeni tarihi tarafınıza e-posta yoluyla bildireceğiz.
devamını oku…
Epey zamandır yazı yazmıyordum malum geçtiğimiz günler bayramdı hepinizin geçmiş bayramı mubarek olsun…. Evet arkadaşlar bu yazımda sizlere entity frameworkta datagridviewi nasıl doldururuz bundan bahsedeceğim… Basit örnek olabilir belki ama mantığını almak için önemli bir örnek olacak sizler için
-
NorthwindEntities nt
= new NorthwindEntities
();// entitymizden bir instance alıyoruz
-
dataGridView1.DataSource = nt.Customers; // instance aldığımız entitmizde olan tablomuzuda data gridviewe data source olarak veriyoruz..
-
// Şimdi birde customers tablosundaki istediğimiz tabloları datagridviewe ekleyelim önce daha önceki sorgularda bu sorguları yazmıştık…
-
var sorgu
= from c
in nt.
Customers select
new {c.
Country,c.
City };
-
dataGridView1.DataSource = sorgu; // sorgumuzu yazdıktan sonra datagrid e data source olarak veriyoruz…
-
// esasında iki sorgu arasında bir fark yok nt.customers dediğimizde tüm kolonları getiriyor ikinci sorgumuzda sorgumuz var sorgu=from c in nt.Customers select c; şeklinde yazsaydık aynı sonucu alırdık
Evet arkadaşlar bu yazımızında sonuna geldik sormak istediklerinizi sorabilirsiniz.Bir sonraki yazımızda görüsmek üzere…
Bu makalemizde sizlere entity frameworkta select sorgusu nasıl yapılır bunu göstereceğim önceki makalelerde select sorgularını görmüştünüz bugun biraz daha detaylı bakacağız lafı uzatmadan konuya geçelim…
-
MagazaEntities mgz
=new MagazaEntities
();// bir magaza entites olusturuyoruz
-
var sorgu=from c in mgz.Urunler select c;
-
// c değişkenine magazanın ürünler tablosunu atadık ve sorgumuzu yazdık linq kullananlar bilirler bu sorguları Peki where kıstı verseydik nasıl yapacaktık
-
var sorgu2=from d in mgz.Urunler where d.Kategori==("Elektronik") select d;
-
// Burada where kıstını verdik kategorisi elektronik olanları bize getirecek… c dedim ve d dedim iki değişkene onlara istediğinizi diyebilirsiniz where kıstında o değişkeni yazdığınızda sanki bir instance almıs gibi hangi tabloyu verdiyseniz o değişkene onun propertylerinin geldiğini göreceksiniz.
-
var sorgu3
= from e
in mgz.
Urunler select
new { e.
Kategori, e.
UrunAd };
-
//Eğer select sorgusunda atadığımız istediğimiz kolonları select sorgusuna ekledik bunun için selecten sonra select new diyip {}istediğimiz kolonları yazıyoruz…
devamını oku…
Evet arkadaşlar bu yazımızda sizlere entity frameworkta silme işlemi nasıl yapılır bunu anlatacağım her zamanki gibi projemiz üzerinden ilerliyoruz bu değerler nerden geldi derseniz entity framework proje oluşturmak adlı makalemize bakabilirsiniz… Lafı çok uzatmadan başlayalım.
-
MagazaEntities mgz
= new MagazaEntities
();
-
// Bir instance alıyoruz entitymizden bunu her yerde almamak için global yapıp kullanabiliriz
-
Urunler urn = (from c in mgz.Urunler where c.ID == 1 select c).First();
-
// ID si 1 olan ürünü sectik "select *from Urunler where ID=1" den farkı yok bu sorgumuzun…
-
mgz.DeleteObject(urn);
-
// Urun tipinden bir parametre istiyor bu metodda adından anlasıldığı gibi silme işlemi için kullanılıyor
-
mgz.SaveChanges();
-
// Her zamanki yaptığımız gibi save ediyoruz
Evet gördüğünüz gibi silme işlemide böyle yapılıyor sormak istediğiniz bir şey varsa sorabilirsiniz… Bir sonraki makalemizde görüsmek üzere hoşçakalın…
Evet arkadaşlar bu yazımızdada ado.net entity frameworkta update işleminden bahsedeğim…
devamını oku…
Merhaba arkadaşlar bu makalemde entity frameworkta insert işlemi nasıl yapılır bundan bahsedeceğim… Arkadaşlar örnekleri bir proje üzerinden anlatacağım bu değerler nerden geldi diyorsanız bu makalemde görebilirsiniz…
-
//EntityFramework projesi oluşturmak adlı makalemizdeki örnekten devam ediyorum oradaki entitymizin adı magazaentitesti
-
//Magaza enntiesten bir instance alıyorum..
-
MagazaEntities mgz
= new MagazaEntities
();
-
//Bu entitmizde urunler diye tablomuz vardı ondanda bir instance alıyorum
-
Urunler urn
= new Urunler
();
-
// değerleri nereden alacağımızı söylüyorum…
-
urn.UrunAd = txtUrunAd.Text.Trim();
-
// gördüğünüz gibi urn.der demez intellisiense tablemizdeki alanları ve diğer propertiyleri getirdiğini göreceksiniz
-
urn.Kategori = txtUrnKategorisi.Text.Trim();
-
urn.Adet = Convert.ToInt32(txtUrnAdet.Trim());// int tanımladğım bir alandı convert ettim
-
mgz.AddToUrunler(urn); //addToUrunler metodu databaseye gonderen metod katmanlı mimari yazanlar facade kısımında bu methodları tanımlamışlardır Bu methodları entityframework kendisi oluşturur seçtiğimiz tablolara göre birde delete için methodu vardır bunun update için yok…
-
//Bize kalan tek şey bu methodun istediği tipten parametre vermek
-
// Bunları yaptıktan sonra
-
mgz.SaveChanges();// Değişiklikleri kaydediyoruz Unutmayın bunu hemen hemen her yaptığımız işten sonra yapmalıyız update ve delete işlemlerindede yapacağız
Eğer Normal şekilde yapsaydık ne yapacaktık connection tanımlayacaktık daha sonra sql kodumuzu yazacaktık,parametrelerimizi verecektik connectionu acıp execute edip connectionu kapayacaktık … Gördüğünüz gibi bunların hiç birini yapmadık ve insert işlemini gerçekleştirdik…
Sorularınızı bu başlık altından sorabilirsiniz…
Ado.Net Entity Framework’te proje oluşturmayı öğreneceğiz bu akşam öncelikle proje oluşturabilmek için visual studio 2008 SP1 olması lazım … Evet bir adet application olusturduktan sonra add new item diyoruz oradan aşşağıdaki resimdede gördüğünüz gibi Ado.Net Entity Data Model’i seçiyoruz
devamını oku…
Bu yazımızda sizlere biraz da olsa entity framework temel yapıları ve yapılan işlemlerin sıralamasını hangi aşamalardan geçtiğini yazılı olarak anlatacağım ilerleyen makalelerde ise projeler üzerindenEntity frameworkun çalışma mantığını kavramaya çalışacağız… Fazla vaktinizi almadan konuya gireyim..
devamını oku…