Bu makale serisinde baştan sona Entity Framework hakkında bilgiler vermeyi planlıyorum. Makale serisini takip ederseniz Entity Framework hakkında çok geniş bilgiye sahip olabilirsiniz..

Şimdi başlayalım..

Nedir bu Entity Framework?

Entity Framework Microsoft tarafından geliştirilen ve yazılım geliştiricilerin katı sql sorguları yazmalarını ortadan kaldırarak bir ORM (Object Relational Mapping) imkanı sağlayan framework'tür. ORM ise ilişkisel veritabanı yönetim sistemlerine direkt olarak müdahale yerine nesneler aracılığı ile müdahale edilmesini sağlayan bir köprüdür diyebiliriz.

Piyasada bir çok ORM Framework'leri bulunmaktadır. Örnek olarak; DataObjects.Net, NHibernate, OpenAccess, SubSonic etc. Entity Framework vs..

Entity framework ile birlikte LINQ (Language Integrated Query) sorgularını kullanarak nesneler üzerinde güçlü bir sorgulama imkanına sahip oluruz. Entity framework'ün bize sunduğu hizmetler başlıca change tracking, identity resolution, ve query translation. 

Not : Tüm bu hizmetleri ilerleyen makalelerde detaylıca inceleyeceğiz ancak siz bu konuları araştırarak ön bilgiye sahip olursanız daha iyi anlayacaksınızdır konuları..

Entity framework'ün aslında temel amacı uygulama geliştiricinin data işlemleri ile çok haşır neşir olmadan uygulama tarafına odaklanmasını sağlamaktır. Çok basit bir örnek olarak, klasik ADO.NET uygulamalarında bir bağlantının açılmasından ve kapatılmasından tamamen biz geliştiriciler sorumludur. Ancak entity framework kullandığınızda bu tür işlemlere siz karışmazsınız. Sorgunuzu hazırlar ver entity framework aracılığı ile bunu database'e iletirsiniz..

Entity Framework Mimarisi

EDM (Entity Data Model): EDM 3 bölümden oluşur. Conceptual Model, Mapping, Storage Model.

Conceptual Model: Bu alanda model sınıflarımız ve bu sınıfların ilişkileri yer alacaktır. Bu sınıflar veritabanı tasarımınızdan bağımsız olacaktır.

Storage Model: Bu alanda veritabanı tasarım modelimiz yer alır. Bu model içerisinde veritabanımıza ait tablolar, view'lar, stored procedure'ler ve bunlara ait ilişkiler ve key'ler yer alır.

Mapping: Bu alan ise model sınıflarımız ile tasarım modelimiz arasındaki haritalama işlemlerinin bilgilerinin tutulduğu alandır.

LINQ to Entities: Nesneleri sorgulamada kullanacağımız sorgulama dilidir. Bu sorgular bize model sınıflarını döndürecektir. Bu alanda LINQ'in yeteneklerini de kullanabiliriz.

Entity SQL: Yine LINQ to Entities gibi sorgulama yapabileceğimiz bir sorgulama dilidir. Ancak Linq To Entities'e göre daha zordur.

Object Services: Veritabanından sorgulama sonucunda alınan verilerin geri döndürülme aşamasında gereken convert (dönüştürme) işlemlerinin yapıldığı alandır.

Entity Client Data Provider: Bu alanın sorumluluğu hazırlanan LINQ to Entities yada Entity SQL sorgularını ADO.Net Data Provider'a gönderilmek üzere anlaşılır SQL sorgularına dönüştürmektir.

ADO.Net Data Provider: Bu katman ise standart ADO.NET kullanarak veritabanı ile iletişim kurar.

Bu makalemde temel olarak Entity Framework yapısını anlatmaya çalıştım. Çok detaya inmemin nedeni, bu sistemi kullanmaya başladığınız zaman neyin nasıl işlediğini bilin ki ona göre işlemlerinizi yapın demek içindi. İlk kez bakacaklar için karmaşık gelebilir ancak merak etmeyin. Entity Framework'ü kullanmaya başladığınız zaman çok rahat adapte olabileceğiniz bir yapı olduğunu göreceksiniz. Entity Framework kullanmaya başladığınızda kesinlikle ADO.NET e dönüş yapmak istemeyeceksiniz. Projelerinizin çok daha kısa sürede ve çok daha hatasız şekilde geliştirilebilmesi için büyük bir velinimettir Entity Framework.

Makale serisini hazırlarken entityframeworktutorial.net sitesini detaylıca kullanmayı planlıyorum (bu makalede de epeyce kullandım zaten.). Sizde bu site üzerinden örnekleri inceleyebilir ve fikir sahibi olabilirsiniz...