Bu konumuzda veritabanımızda bulunan bir tabloyu nesneye
dönüştürme işlemi yapacağız. Aslında reflection altında daha ciddi manada
yapılabilecek çalışamalar olsada bu seferlik Linq kullanımına değineceğim.
İlk olarak veritabanımızda bir tablo oluşturalım.
İkinci olarak visual studio ortamında consol uygulaması
oluşturuyoruz. Neden consol e kalabalık değil de ondan. Oluşturacağımız nesneyi
hızlı bir şekilde uygulamanın ana class dosyasına ekleyelim.
Görüldüğü gibi tabloda ki alanlarla aynı adda özellikler
oluşturdum. Efendim farklı adlarda olamazmıydı e olurdu ama olayın doğasına
aykırı, Microsoft Entity Framework de bunu yapıyor ya bir hikmet vardır
diyoruz. Şimdi db bağlantılarını sağlayalım.
Burada da temel olarak kullanabileceğimiz datatable doldurma
işlemi için gerekli olan minimum kodla verileri alıyoruz. Tabi tablomuza kayıt
girmeyi unutmayın ben göstermedim diye de atlamazsanız iyi olur. Şimdi bir
debug çekerek kontol edelim olayı.
Evet Autos penceresinde bulunan rows değerini açtığımızda
count değerinin 4 olduğunu görüyorum. Tabloma 4 adet kayıt girmiştim. Hemen
Linq koduna başlayalım.
Görüntüde görüldüğü gibi bir liste oluşturuyoruz tabi
taşıyıcı tipi bizim modelim nesnesi ile. Daha sonra from satırında tablomuzun
AsEnumerable() fonksiyonu ile datarow ları tablo satırları yerine sıralanmış
datarow dizisine dönüştürmüş oluyoruz. Enumerable kelimesinin manası da
sıralanmış dizisel değerler gibi birşey. Her bir satırı _m değişkenimize
bindirdikten sonra geri dönüş sağlamak için select kısmında genelde new
denildikten sonra { bu parantez kullanılır ki bu dinamik bir nesne oluşturmak
içindir. Bizim nesnemiz ise belirli olduğu için new modelim { şeklinde
başlıyoruz. Alt satıra indiğimizde
nesnemize ait özellikleri yazmaya başladığımızda intelli sense (şu yazmaya
başlayınca bize uygun sonuçlar gösteren cursorun altında çıkan liste) hemen
tanıyor olaraktır. _m bir sütun nesnesi olduğu için okuyacağımız sütunu field
methoduyla çağırıyoruz. Ancak dönecek tipi belirtmemiz şart. Örnekteki gibi eşleşme
sağlandıktan sonra normalde dönecek şey enumerable tipinde modelim dizisi
olacağı için listeye direk atamamız mümkün olmuyor. Linq sorgusunu parantez
içerisine alıp sonuna nokta koyarak ToList fonksiyonu yardımıyla listeye
dönüştürebiliriz. Dönüştüreceğimiz listenin taşıdığı tipi de belirtip olayı
sonlandırıyoruz.
Ekrana sadece listenin countunu (adetini) yazdırdım. Bu 4
olması gerek çünkü 4 kaydım vardı.
Bakın bize 4 değerini verdi. Demekki tablolarımızı nesnelere
dönüştürme işlemi o kadar da zor değilmiş. İlla ki nesneye ihtiyaç duyuyorsanız
ve projede küçük bir veri kümesini bir şekilde nesnelleştirmeniz şart ise
Entity Framework kurmaya gerek kalmadan elle de bu işlemi yapabiliyoruz.
Bir daha ki yazımda görüşmek dileğiyle.
0 yorum:
Yorum Gönder