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ğlayabilirizAncak 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.
Lazy Load Kapalı iken
Bu sorgu en temel sorgulardan biridir.
Kod:
TelefonRehberiEntities tr = new TelefonRehberiEntities();
var kisi = tr.Kisi;
dataGridView1.DataSource = kisi;
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