Rakkoc.Com Recep Akkoç / Rakkocun Yazıtları

5Oca/140

(EF) Entity Framework Nedir?

Entity Framework (EF)’ün tanımına geçmeden bilmemiz gereken bir iki tanim vardir. Bunlar Object Relational Mapping (ORM) ve Object Oriented Programming (OOP). Entity Framework, .Net platformunda ORM (Object Relational Mapping) araçlarından biridir. ORM (Object Relational Mapping) ise veritabanı ile nesneye yönelik programlama (OOP) arasındaki ilişkiyi kuran teknolojidir. Yani Entity Framework, nesne tabanlı programlamada veritabanındaki tablolara uygun nesneler oluşturma tekniğidir.

Öncelikle ORM nedir sorusuna cevap bulalım ; Veritabanımızda yaratmış olduğumuz her bir nesneye karşılık kod tarafında bir nesne oluşturan programlardır diyebiliriz. Bu programlar code generation veya shema generation tekniği kullanarak bizim yazmamız gereken kodu otomatik üretiyor veya tam tersinde bizim yazdigimiz kod sablonuna uygun database semasini olusturuyor.

Günümüzde kullanılan birçok ORM aracı bulunmaktadır. Örneğin; Java tabanlı olarak Hibernate, Flex’de Athena Framework, Delphi’de ECO gibi. Entity Framework ise Microsoft tarafından geliştirilen .Net tabanlı bir ORM aracıdır. Entity Framework ile kolayca CRUD işlemleri yapılabilir. Peki, neden ORM? Çünkü;

- Veritabanı işlemleri ile ilgili kod yazımı en aza ineceğinden minimum zamanda maksimum iş çıkartmayı sağlar.

- OOP 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 geçmeniz istendi. Bunu yapabilmek için birçok ayar gerekirken Entity Framework 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.

-Maintenance daha kolaydır.

Her ne kadar EF kodlama olarak zaman kazandırsa da performans olarak ADO.Net kadar hızlı değildir. Bunu ayriyetten belirtmek istedim cunku yazilan her proje Entity ile olmak zorunda degildir ve/veya projenin tamaminda entity kullanmak zorunda olmak sizin icin dezavantaj olabilir.

Entity Framework .Net 3.5 ile beraber Vs 2008 sp1 ile gelmistir. tarih 11 Agustor 2008

Database tarafinda relationshiplarimiz (iliskiler) orm tarafinda association olarak adlandirilacaktir.

Entity Framework ile 4 farklı yöntem ile proje geliştirilebilir. Bu yöntemler;

- Model First (New Database)

-  Database First (Existing Database)

- Code First (New Database)

- Code First (Existing Database)

Model First (Önce Model): Bu yöntemde Visual Studio üzerinde boş bir model dosyası (.edmx) eklenerek veri tabanı bu model üzerinde tasarlanir. Derleme adiminda verilen script dosyasi ile veri tabani oluşturulur.

Database First (Önce Veritabanı): Bu yöntemde hali hazırda var olan veritabanı projeye model dosyası ile bağlanır ve gerekli class’lar EF tarafından üretilir. Ilerde veritabanina yapilacak eklemelerde mevcut version Ef 6 da sorunlar yasamistim kod daki classlarin iliskilerini tam yapamadigi icin bu versionu kullanmaktan uzak durmaktayim (giris seviyesineki en kolay version da budur.

Code First (Önce Kod – Yeni Veritabanı): Bu yöntemde classlar ve mapping kodları yazılımcı tarafından oluşturulur. Daha sonra veri tabanı bu class’lardan türetilir.

Code First (Önce Kod – Var olan Veritabanı): Bu yöntemde de classlar ve mapping kodları yazılımcı tarafından oluşturulur. Veritabanı class’ların ve modellemenin durumuna göre tekrardan şekillenebilir.

ilerleyen yazilarimda ustunde duracagim daha cok Code First olan version olacaktir.