İçeriğe geç

Code-first ve Database-first Karşılaştırması

Bilgi birikiminiz ilerledikçe kendinizi bir noktada daha ilerletmeniz gerekmekte. O da şudur ki bilgi birikiminiz dahilinde iyi bir analiz yapıp seçici olmak. Örneğin aynı işlevi gören birden fazla loglama yapılarını(Elmah, Log4Net, NLog) deneyimlemiş olabilirsiniz veya birden fazla IoC yapılarını(Castle Windsor, Ninject) incelemiş olabilirsiniz.

Hatta aynı işlevi yerine getirebileceğiniz farklı yapıların yanı sıra tek bir yapının sizlere sunduğu farklı yaklaşımlar olabilir. Örnek vermek gerekirse Entity Framework‘ün bizlere sağladığı 3 tip yaklaşım bulunmakta. Bunlar; Code First, Database First ve Model first şeklindedir. İşte bu yazımda bu 3 farklı yaklaşım için aralarındaki farkları inceleyeceğiz.

 

Code First

  • Oldukça popülerdir. Çünkü hard core programcılar komplike EDMX xml tanımlamalarını ve tasarlama türlerini sevmez.
  • Bütün kontrol sizdedir. Güncelleme gereksinimlerinde autogeneration yoktur.
  • Bu yapıda genel beklenti sizin DB tarafı üzerinde yoğunlaşmamanızdır. DB sadece depolama görevi görür. İçinde işi akışına ait kodlar barındırmaz.
  • Veritabanına manuel yapacağınız değişimler(kolon ekleme, silme…) muhtemelen kaybolacaktır. Çünkü bu yapı, kodlarınızın DB tarafında tanımlanması durumudur.

 

Database First

  • Eğer bir DBA aracılığı ile hazırlanmış bir veritabanı tasarımınız varsa bu yapı yararlıdır.
  • EF sizin için entity’leri hazırlar ve sonrasında POCO nesneleri oluşturabilirsiniz.
  • Veritabanı tarafında manuel değişimler mümkündür. Çünkü veritabanı modellemesi sizin domain model tarafında yer alır. Her zaman veritabanından güncelleme yapabilirsiniz.

Şimdi bu noktada hangi yaklaşımı izleyeceğimiz keyfi bir adımdan ziyade gereksinimler doğrultusunda olmalı ki işin özünde bir veritabanına sahipseniz Database first eğer aksi durumda ise Code first kullanılır diyebiliriz. Herkese keyifli kodlamalar.

 

Tarih:Entity Framework

3 Yorum

  1. teşekkürler ihtiyar.

  2. ecivecivokke ecivecivokke

    Usta eyvallah da Model First’ü niye anlatmadın?

  3. legendary legendary

    Makale için teşekkürler. Yalnız elimizde db first bir proje varsa bunu code first yaklaşımıyla devam ettirebilir miyiz. Yeni bir model ekledik diyelim, bunu update-database komutuyla kolayca db ye tablosunu oluşturabiliyoruz fakat db first projede bunu yapabilir miyiz. ? Yapabiliyorsak bunu nasıl gerçekleştirmeliyiz ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.