ENTITY FRAMEWORK – 1

1-)Entity Framework de,LLBLGEN,NHIBERNATE gibi bir ORM tooludur.Ancak Özelliği Microsoftun kendi orm toolu olduğu için Visual Studio 2008/2010 kurduğunuzda otomatik olarak gelmektedir.

İlk Önce Entity Frameworkdede nesneleri oluşturmamız gerekmektedir

2-)Bize ilk soracağı şey nesneleri databaseden modellemek istediğimiz,yoksa nesneleri kendimizin oluşturup sonradan mı database oluşturacağımıza karar vermemizdir.Empty model ise database vermeden kendimizin nesneleri oluşturması için kullanılır.Ancak daha sonra istersek tersine mühendislik yaparak databasemizi oluşturup connection bağlayabiliriz.Ancak bizim veritabanımız zaten mevcut olduğu için Generate from database seçeneğini seçiyoruz.

3-)Bir sonraki adımda Connectionımızı belirliyoruz

4-)Bu adımda modellemek istediğimiz database nesnelerimiz seçiyoruz.Tabi hepsini aynı ayda oluşturmak zorunda değiliz istersek bir kısım tablo ve viewleri oluşturmayabiliriz veya sonradan oluşturabiliriz

5-)Artık contextimiz oluşmuş durumdadır

6-)Contextimizi oluşturduktan sonra model browserdan Özelliklerimize bakabiliyoruz.

7-)Peki Veritabanımıza yeni bir tablo eklediğimiz zaman veya alan eklediğimizde bunları contexttimize nasıl yansıtırız.Örnek olarak Kisi Tablomuza yeni bir alan ekleyelim ve Kitap diyede yeni bir tablo ekleyelim.

Model Browserdan Model1.edmx in üstüne gelip sağ tuş dediğimizde

Update Model From Database diyoruz.Daha sonra açılan ekrandan veritabanımıza yeni eklenen tablo,view vs görüntüyebiliyoruz.Burada yeni eklenen kitap tablosunu seçiyorum.(Zaten mevcutta ekli tablolar üstünde değişiklikleri kendisi görüyor,ayrı birşey seçmeme gerek yok).Bu şekilde finishe bastığımızda artık yeni eklediğim TC kimlik numarası alanı ve yeni tablom benim modelimin içerisine gelmiş oldu.

8-)Lazy Load Kısaca verilerin bağlı oldukları verileride getirmesi işlemidir

Modelimiz(Contextimiz) in lazy load özelliğine bakmak istiyorsak isel Model Browserdan

Modelimizin Properties tıklayarak Lazy Load Enabled özelliğimizi True veya False

alabiliyoruz. Ben aşağıda lazy load açıkken ve kapalı iken Sql Profilerdan Sql giden sorguları trace ettim.

TelefonRehberiEntities tr = new TelefonRehberiEntities();

var kisi = tr.Kisi;

dataGridView1.DataSource = kisi;

Lazy Load Kapalı iken

Bu sorgu en temel sorgulardan biridir.

SELECT

[Extent1].[KisiID] AS [KisiID],

[Extent1].[Ad] AS [Ad],

[Extent1].[Soyad] AS [Soyad],

[Extent1].[Cinsiyet] AS [Cinsiyet],

[Extent1].[Yas] AS [Yas],

[Extent1].[TCKimlik] AS [TCKimlik]

FROM [dbo].[Kisi] AS [Extent1]

Lazy Load Açık iken

SELECT

[Extent1].[KisiID] AS [KisiID],

[Extent1].[Ad] AS [Ad],

[Extent1].[Soyad] AS [Soyad],

[Extent1].[Cinsiyet] AS [Cinsiyet],

[Extent1].[Yas] AS [Yas],

[Extent1].[TCKimlik] AS [TCKimlik]

FROM [dbo].[Kisi] AS [Extent1]

exec sp_executesql N’SELECT

[Extent1].[KisiID] AS [KisiID],

[Extent1].[DogumGünü] AS [DogumGünü],

[Extent1].[Meslek] AS [Meslek]

FROM [dbo].[KisiDetay] AS [Extent1]

WHERE [Extent1].[KisiID] = @EntityKeyValue1′,N’@EntityKeyValue1 int’,@EntityKeyValue1=1

Lazy load açıkken Görüldüğü gibi kayıtların ilişkili kayıtlarıda görmüş olur

Bu yazı .NET kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>