Entity Framework (EF)’ün tanımına geçmeden önce ORM’nin kısaca tanımı ile başlamak gerekli. ORM yani "Object Relational Mapping" (Nesnelere Yönelik İlişkilendirme) geliştirilen uygulama ile veritabanı arasında köprü olan bir araçtır.
Başka bir deyişle ORM, veritabanında oluşturulan her bir nesneye (tabloya) karşılık uygulama tarafında bir nesne oluşturma işidir. Bu işlem bazı Framework larda ara yazılımlar sayesinde (ORM Tools), bazı framework larda ise elle gerçekleştirilmektedir.
Veritabanındaki tabloları class’lara, kolonları property’lere, kayıtları ise objelere dönüştürerek uygulamanın direkt olarak veritabanına erişmesine gerek kalmadan tüm veri tabanı işlemlerini gerçekleştirir. Böylece veritabanı işlemlerinin Sql kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar. Bunu basit bir örnekle şöyle anlatabiliriz. Veri tabanına yapılacak olan CRUD (Create Read Update Delete - Yarat Oku Güncelle Sil) işlemleri ORM aracı tarafından algılanır ve yapılacak olan işlem Sql kodlarına dönüştürülür. Bu işleme “Code Generating” (Kod oluşturma) denir.
EntityFramework ‘ta ORM;
Database First (önce veritabanı) yaklaşımında veritabanı yapısından yola çıkarak önce veritabanı tablolarını tanımlayan class(sınıf) ‘ları oluşturur. Sonra bu class‘lardan yola çıkarak View–Ekran ‘lar hazırlanır.
Bu View‘ler Yeni Kayıt (Create), Güncelle (Update), Listele (Read) ve Sil (Delete) olarak seçiminize göre ve otomatik olarak hazırlanır.
CodeFirst (önce kod) yaklaşımında ise hazır bir veritabanı yok ise yazılımcı veritabanı tablo yapılarını class‘lar ile tanımlar. Bu class‘lar ile veritabanı otomatik olarak oluşur.
Entity Framework ise Microsoft tarafından geliştirilen .Net tabanlı bir ORM aracıdır. Entity Framework ile kolayca CRUD işlemleri yapılabilir.
Neden ORM?
Çünkü;
Veritabanı işlemleri ile ilgili kod yazımı en aza ineceğinden minimum zamanda maksimum iş çıkartmayı sağlar.
OOP (Object Oriented Programming - Objelere yönelik programlama) düzeninde kod yazmayı sağlar.
Veritabanı olarak esnek yapıya sahiptir. Örneğin yazdığınız proje MSSQL ile çalışmakta ve birden Oracle’a veya MySql‘e geçmeniz istendi. Bunu yapabilmek için diğer sistemlerde yeniden yazılım ve birçok yeni ayar gerekirken EntityFramework ile direkt geçiş yapabilirsiniz.
Veritabanı bağımlılığı yoktur. Yani EF’yi oluşturmadan önce veritabanı tablo ve kolonlarını oluşturmalısınız gibi bir kural yoktur. Siz EF ile modellemeyi yaparken olmayan tabloları ve kolonları sizin yerinize açacaktır.
Bakım daha kolaydır.