Entity Framework: Database First, Model First, Code First

Entity Framework: Database First, Model First, Code First

Entity Framework, ORM (Object Relational Mapping) modellemede 3 farklı yaklaşımı olan database first, code first ve model first yaklaşımlarına değineceğiz.
Elif Koç20 Kas 2022

Entity Framework .NET uygulamaları için bir nesne-ilişki eşleme çerçevesidir. Nesne-ilişki eşleme, veritabanı sorgularının ve işlemlerinin nesne yönelimli programlama dilleriyle kullanılmasına imkan tanır.

Entity framework tarafından uygulanan 3 farklı yaklaşım vardır. Bunlar:

  • Database first
  • Code first
  • Model first

Bunlardan database first ve code first en çok kullanılan yaklaşımlardır.

 

Kaynak

 

Code first

İstenilen özelliklere sahip entity sınıflarının oluşturulduğu Code First yaklaşımında entity framework, tanımlanmış olan entity sınıflarına göre veritabanı ve tabloları oluşturacaktır. Bu sayede, veritabanı kod aracılığıyla oluşturulmuş olur. .Net kodu çalıştırıldığında veritabanı oluşturulmuş olur.

 

Kaynak

 

Code First yaklaşımının avantajları

  • Veritabanı ve tabloları business (iş) nesnelerinden oluşturulabilir.
  • Küçük uygulamalar için iyidir.
  • Veritabanı sürüm kontrolü sağlar.
  • Hangi koleksiyonların eager loaded (eager loading, kod yürütülür yürütülmez bir kaynağı başlatır veya yükler) olacağı belirtilebilir.

Code First yaklaşımının dezavantajları

  • Veritabanı ile ilgili her şeyin Visual Studio Code tarafına yazılması gerekir.
  • Veritabanı tablolarındaki herhangi bir şey değiştirilmek istendiğinde, kod dosyasındaki entity sınıflarında değişiklik yapılır. Package manager console üzerinde veritabanı güncellenir.
  • Veritabanını kod aracılığıyla yönetmek zordur, bu nedenle, büyük miktarda veri işlememiz gereken ve verileri oluşturmak veya sürdürmek için karmaşık mantıklara sahip olmanız gereken veri kapsamlı uygulamalarda önerilmez.

 

Database first

Bu yaklaşımda önce veritabanı ve tablolar oluşturulur. Ardından, oluşturulan veritabanını kullanarak entity veri modeli oluşturulur.

 

Kaynak

 

Database First yaklaşımının avantajları

  • Veri modeli oluşturmak için basit kullanıma sahiptir.
  • Grafiksel kullanıcı arayüzü (GUI) anlaşılırdır.
  • Herhangi bir kod yazılması gerekmediğinden key (anahtar) ve relationship (ilişki) eşlenmesi ve oluşturulması kolaydır.
  • Verinin fazla olduğu uygulamalar için tercih edilir.

Database First yaklaşımının dezavantajları

  • Bir .edmx model dosyası ve ilişkili kod modelleri oluşturmak için mevcut bir veritabanının kullanılması, otomatik olarak oluşturulan dev bir kod yığınıyla sonuçlanır.
  • Oluşturulan modele herhangi bir işlevsellik eklenmesi gerektiğinde, oluşturulan model sınıfının genişletilmesi gerekir.

 

.edmx dosyası, veritabanı şemasını tanımlayan büyük bir XML dosyasıdır.

Model first

Model First yaklaşımında varlıklar, ilişkiler ve kalıtım hiyerarşileri doğrudan .edmx’in tasarım yüzeyinde oluşturulur. Bir başka deyişle, önce Entity Framework Designer aracı kullanarak model oluşturulur. Model kavramı burada, tasarım araçlarıyla oluşturulmuş görsel bir diyagramı temsil etmektedir. Ardından oluşturulan modelden veritabanı oluşturulur. Oluşturulan model aracılığıyla veitabanı nesneleri ve verilerine erişilir.

 

 Kaynak

 

Model First yaklaşımının avantajları

  • Veri yapısı büyük olduğunda veritabanı şeması ve sınıf diyagramı bir bütün olarak oluşturulıp görüntülenebilir.

Model First yaklaşımının dezavantajları

  • Database Migrations yapılamaz, bunun için ‘third party tool’ kullanılması gerekir.
  • Büyük bir ekiple çalışırken, tüm veritabanı dosyası tek bir büyük .edmx dosyasında olduğu için merge conflict yaşanması yaygındır.
  • Otomatik olarak oluşturulan dosyalardan bazıları otomatik olarak gerçekleşmez. .edmx dosyasına right click yaptıktan sonra ‘Generate’ seçeneğinin seçilmesi gerekir.

 

Database migrations; verileri bir veya daha fazla kaynak platformdan başka bir hedef veritabanına taşımaktır. Bir veritabanından diğerine geçiş yapmanın birkaç nedeni vardır. Örneğin, bir işletme bulut tabanlı bir veritabanına geçerek kaynaklardan tasarruf etmek isteyebilir.

Bu yazıda entity framework yaklaşımlarından olan database-first, code-first, model-first yaklaşımlarının tanımlarını, avantajları ve dezavantajlarını özetleyerek inceledik. Bu yaklaşımlardan en iyisi hangisidir sorusunun cevabı aslında tamamen geliştirmekte olunan uygulamaya bağlıdır. 

 

 

Kaynakça

İlginizi Çekebilir
Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.