ORM ve Entity Framework | Bilişim IO
ORM Nesne ilişkisel eşleme işlemidir. Aslında veritabanındaki verileri programımız içindeki nesneler ile eşleme tekniği olarak düşünebiliriz. Bazı programcılar kendi ORM araçlarını oluşturmayı tercih etse de, nesne-ilişkisel eşleme yapan ücretsiz ve ücretli paketler mevcuttur. ORM tekrarlı kod yazmamızı azaltığı gibi veri bütünlüğü ve doğruluğu gibi faydaları vardır. Veritabanına yollamadan önce tutarlılığı bir üst katmanda kontrol etmemizi sağlar. En büyük zorluğu ise eşleştirmelerde yaşanır.Genel olarak belli veritanları ve genel veriler üzerinde çalışsakta gerçekte bir çok sistemin olduğunu unutmamalıyız. Bu zorluğa ise nesne-ilişkisel empedans uyumsuzluğu(object-relational impedance mismatch) denir.
ORM araçlarının aslında bizi götüreceği yer OODBMS yani nesneye yönelik veritabanı yönetim sistemidir. Nesneye dayalı programlama teknikleri ile veritabanı yönetim ilkelerinin birleşmesinden oluşur. Birincil anahtarlarımızın yerini OID alanlarının aldığı bir sistemle karşılaşırsanız. OODBMS sisteminin içinde olduğunuzu varsayabilirsiniz. Developer Expressin ürünü olan XPO OODBMS sistemine destekle gelmektedir. Bu ürünün deneme sürünümünü indirip bu veritabanı yaklaşımını inceleyibilirsiniz. Bu konu üzerinden çok fazla durmayacağım. Sadece önümüze geldiği için biraz bahsetmek istedim. Her ne kadar sektör tarafında belli uyuşmazlıklar ve anlaşmazlıklar olsa da gelecekte kullanacağımız sistemler arasındadır. ORM araçlarına programcılık dünyası açısından bakıldığında performans ve raporlama kriterleri düşünüldüğünde halen bir projede sadece sadece ORM araçlarını mı kullanmalıyız yoksa belli yerlerde sorgulama dili veya saklı yordamlara başvurarak işlemlerimizi mi yapmalıyız gibi tartışmaların sürdüğünü de unutmamak gerekir. Bu tartışmaların sürmesinden kaynaklı mıdır tam olarak bilemesemde çoğu orm aracının kendi üstünde direk sorgulama dili yazma eklentisini eklediğinide gözlemlemekteyiz.
Entity Framework kısaca Microsoftun kendi geliştirdiği ORM aracıdır. ORM araçları açısından markete bakıldığında LLBLGEN PRO, DataObjects.Net, NHibernate, OpenAccess, SubSonic, ,XPO vb.bir çok ürün bulunmaktadır. İşte ADO.NET Entity Framework bunlardan biridir. Daha doğrusu bunların Microsoft versiyonudur.
Aşağıdaki şekilde EF genel mimarisi görünmektedir. Aşağıdaki şekli once bir inceleyin daha sonra hep birlikte bu bileşenlerin üstünden geçelim.
EDM (Entity Data Model): Varlık veri modeli olarak adlandırabiliriz. Burada kullanılan valık kısmı bizim veritatabınımızda bulunan öğelerimize denk gelmektedir. Bu kısım üç ana bölümden oluşur. Bunlar Kavramsal model, Haritalama ve Depolama modeli olarak isimlendirilir.
Kavramsal (Conceptual) Model: Model sınıfları ve onların ilişkilerinin tutulduğu kısımdır.
Depolama(Storage) Modeli: Veri tabanının tasarım modeli burda tutulur. Buranın içinde tablolar,görüntüle,saklı yordamlar, ilişkiler ve anahtarlar yer alır.
Eşleştirme/Haritalama(Mapping): Kavramsal model ile depolama .modelinin nasıl eşlendiği bilgisi bu kısımda yer alır.
LINQ to Entities:Nesne modeli üserinde sorgulama yapan sorgula dilidir.Kavramsal model de ki varlıkları bizim tarafımıza döndürür.
Entity SQL: Linq to Sql ile aynı işi yapan sorgula dilidir. Fakat farklılıkları bulunur. Ve yazılımcıların bu dil üstünde çalışması ve bunu öğrenmesi gereklidir.
Nesne Servisi (Object Service): Nesne servisi veritabanından veri erişim için ana giriş ve çıkış noktasıdır. Varlık very sağlayısıcında dönen datayı varlık nesne yapısında dönüştürür.
Entity Client Data Provider: Bu katmanın ana yaptığı iş nesneler üzerinde yaptığımız sorguları veri tabanını anlayacağı dile çevirmesidir.
ADO.Net Data Provider:Standart Ado.Net katmanını kullanarak veritabanı ile haberleşmeyi sağlar.