Entity Framework'te varlıkları modellemeye yönelik farklı yaklaşımları keşfedin

Entity Framework, CRUD (Oluşturma, Okuma, Güncelleme ve Silme) işlemlerini gerçekleştirmek için kod yazmanıza olanak vererek uygulamanızdaki veri erişimini basitleştirir, temeldeki veritabanı sağlayıcısıyla doğrudan etkileşim kurma ihtiyacını ortadan kaldırır. Varlıklarınızı Entity Framework'te modellemek için üç yaklaşım vardır: Code First, Model First ve Database First. Bu makale tüm bu üç yaklaşımı ve artılarını ve eksilerini tartışıyor.

Entity Framework nedir? Neden tüm bu yutturmaca?

Microsoft Entity Framework, uygulamanızın nesne modelini veri modelinden ayırmanıza yardımcı olan genişletilmiş bir ORM'dir. ADO.Net için açık kaynaklı bir ORM çerçevesidir ve .Net Framework'ün bir parçası olarak dahil edilmiştir. ORM araçlarını kullanırken, uygulamanın iş mantığına odaklanabilir ve verileri veritabanında çok daha az kodla depolayabilirsiniz. Uyumsuz tip sistemler arasında verileri dönüştürmek için bir ORM'den yararlanabilirsiniz - verilerin gerçekte nasıl depolandığına dair iç karmaşıklıklar hakkında endişelenmenize gerek kalmadan etki alanı nesnelerinizi temeldeki veritabanına depolayabilirsiniz. Entity Framework, Microsoft'un olgun bir ORM'sidir ve çok çeşitli veritabanları ile kullanılabilir.

Takip eden bölümlerde, Entity Framework kullanarak varlıkları modellemeye yönelik üç yaklaşımın her birini inceleyeceğiz.

Önce Kod

Code First yaklaşımı, etki alanı gereksinimlerine odaklanarak uygulamanızda varlıkları oluşturmanıza yardımcı olur. Esasen, bu yaklaşımı kullanarak Etki Alanına Dayalı Tasarım (DDD) takip edebilirsiniz. Varlıklarınız tanımlandıktan ve konfigürasyonlar belirlendikten sonra, veritabanını her ikisini de kullanarak anında oluşturabilirsiniz. Önce Kod yaklaşımı size kodunuz üzerinde daha fazla kontrol sağlar - artık otomatik olarak oluşturulan kodla çalışmanıza gerek yoktur. Size çok fazla esneklik ve kontrol sağladığından bu yaklaşımı seviyorum. Etki alanı sınıflarınız hazırsa, veri tabanınızı etki alanı sınıflarından kolayca oluşturabileceğiniz için bu yaklaşımı her zaman tercih ederim.

Bu yaklaşımın dezavantajı, temel alınan veritabanı şemasındaki herhangi bir değişikliğin kaybolacağıdır; bu yaklaşımda kodunuz veritabanını tanımlar ve oluşturur. Code First yaklaşımı, Entity Framework kullanmanıza ve varlık modelini tasarımcı veya XML dosyalarını tanımlamanıza olanak tanır. Modeli tanımlamak ve veritabanınızı oluşturmak için POCO (Düz Eski CLR Nesneleri) yaklaşımını kullanabilirsiniz.

Bu yaklaşımda, tipik olarak varlık sınıflarını yaratırsınız. İşte bir örnek; tipik bir varlık sınıfı aşağıda verilmiştir.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

Daha sonra, aşağıda gösterildiği gibi DbContext sınıfını genişleterek özel bir veri bağlamı tanımlamalısınız.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

Son olarak, yapılandırma dosyasında bağlantı dizesini belirtmelisiniz. Bitirdiniz!

Önce Veritabanı

Veritabanı zaten tasarlanmışsa ve hazırsa, Önce Veritabanı yaklaşımını kullanabilirsiniz. Bu yaklaşımda, Varlık Veri Modeli (EDM) temel alınan veritabanından oluşturulur. Örnek olarak, veritabanından Visual Studio IDE içindeki edmx dosyalarını oluşturduğunuzda veritabanı ilk yaklaşımını kullanırsınız. Veritabanında manuel değişiklikler kolayca yapılabilir ve gerekirse EDM'yi her zaman güncelleyebilirsiniz (örneğin, temeldeki veritabanının şeması değişirse). Bunu yapmak için, EDM'yi Visual Studio IDE'deki veritabanından güncellemeniz yeterlidir.

Önce Model

Model First yaklaşımında, önce EDM'yi oluşturabilir, ardından veritabanını ondan oluşturabilirsiniz. Visual Studio'da Varlık Veri Modeli Sihirbazı'nı kullanarak genellikle boş bir EDM oluşturursunuz, varlıkları ve bunların ilişkilerini Visual Studio'da tanımlarsınız, ardından bu tanımlı modelden veritabanını oluşturursunuz. Visual Studio'daki tasarımcıda kolayca varlıklar oluşturabilir ve bunların ilişkilerini ve ilişkilerini tanımlayabilirsiniz. Ayrıca, tasarımcıyı kullanarak varlıklarınızın özelliklerine ilişkin Anahtar özelliğini ve veri türlerini de belirtebilirsiniz. Varlıklarınızda ek özellikler uygulamak için kısmi sınıfları kullanabilirsiniz.

Tamam, ama Model İlk yaklaşımını ne zaman kullanmalısınız? Peki, ne alan sınıfları ne de veritabanı hazır değilse ve veri modelini görsel bir tasarımcı kullanarak tanımlamayı tercih ediyorsanız, bu yaklaşım tam size göre. Ancak, Code First yaklaşımında olduğu gibi, Model First yaklaşım kılavuzunda veritabanında yapılan değişiklikler, model veritabanını tanımladığı için kaybolacaktır.