Bu yazımda ADO.NET Entity Framework hakkında giriş seviyesinde bilgiler vermeye çalışacağım.ADO.NET Entity Framework .NET Framework 3.5 SP1 ile gelen ve VS 2008 SP1 ile VS'ye entegre olan yapıdır.Kullanım amacı ise O/R mapping olarak bilinen veritabanı işlemlerini yapacak olan birtakım sınıflar ile veritabanı işlemlerini eşleştirme olarak söylenebilir..Yani veritabanındaki her tablo birer entity olarak kabul edilir.Buna göre tablolara veri eklerken doğrudan bir nesne ekleniyormuş gibi nesne eklenebilir.Eskiden de bu yöntem kullanılıyordu ancak kullanılacak tüm sınıflar elle oluşturuluyordu.Çok fazla tablonun bulunduğu büyük uygulamalarda bu işleri yapmak pek mantıklı olmuyordu.İşte bunu otomatikleştirmek için ADO.NET Entity Framework Microsoft tarafından yazılımcılara sunuldu.ADO.NET Entity Framework'ü kullanmak için daha önce de belirttiğim gibi .Net Framework 3.5 SP1 ve Visual Studio 2008 SP1 kurulu olması gerekir.Şimdi uygulama yaparak konuya giriş yapalım.Öncelikle bir veritabanına ihtiyacımız var.Bunu aşağıdaki şemaya göre oluşturdum ve içerisine bazı veriler girdim.

Bir windows forms uygulaması yaratıyoruz.Daha sonra Add New Item diyerek Ado.net entity data modeli seçiyoruz.

Burada hazır bir veritabanı üzerinde çalışacağımız için "Generate from database'i" seçiyoruz.

Çıkan yeni sayfada New connection'ı seçerek bağlantı ile ilgili detayları girdikten sonra en alttaki bölüme entity topluluğuna vermek istediğiniz ismi giriniz.Buraya yazdığınız ismi kodunuzun içerisinde yoğun olarak kullanacağınızı düşünerek yazmanız gerekmektedir.
Daha sonra Next'e basarak gelen ekranda uygulamamıza dahil etmek istediğimiz tabloları ,stored procedureleri ve view ları seçiyoruz ve Finish'i tıklıyoruz.
Daha sonra solution Explorer'da oluşan modelimize çift tıklarsak şu şekilde bir tablo ile karşılaşıyoruz.

Şimdi kodumuza baktığımızda Urunler ve Kategoriler diye sınıfların oluşturulduğu görülecektir.

Şimdi formumuzun loadunda elimizdeki gridi ürünler ile dolduralım.
private void Form1_Load(object sender, EventArgs e)
{
EntityDBEntities entities = new EntityDBEntities();
List<Urunler> urunler = entities.Urunler.ToList();
DataTable dt = new DataTable();
dt.Columns.Add("UrunID");
dt.Columns.Add("Urun Adı");
dt.Columns.Add("Kategori No");
foreach (Urunler u in urunler)
{
dt.Rows.Add(u.UrunID, u.Urun_Adi, u.KategorilerReference.EntityKey.EntityKeyValues.First(k => k.Key == "KategoriID").Value);
}
dataGridView1.DataSource = dt;
}
List<
Urunler> urunler = entities.Urunler.ToList();
Burada gördüğümüz gibi tolist metodu ile veritabanımızdaki urunler tablosundaki tüm verileri alıyoruz.Daha sonra tablodaki kolonları sanki bir property gibi yazdırıyoruz.Burada dikkatinizi çeken bir nokta da KategoriID 'yi yazdırma şeklimiz.
u.KategorilerReference.EntityKey.EntityKeyValues.First(k => k.Key ==
"KategoriID").Value
Böyle yapmamızın nedeni foreign key olan bu değere doğrudan ulaşamamamız .Direkt olarak bağlama yaparsanız zaten bu değerin boş olarak geldiğini görürsünüz.Bunun için arada bulanan KategorilerReference ilişkisini kullanarak ve kısa bir LINQ ifadesi yazarak foreign key değerini elde ediyoruz.
Birinci bölümü burada bitiriyoruz.Bir sonraki yazımızda Function importlar,kolon mappingleri ve sp çağırımlarını işleyeceğiz.
Görüşmek üzere...
0 yorum:
Yorum Gönder