Code First & Database First Karşılaştırması

Merhaba,

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ı(ElmahLog4NetNLog) deneyimlemiş olabilirsiniz veya birden fazla IoC yapılarını(Castle WindsorNinject) 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.