Разгледайте различните подходи за моделиране на обекти в Entity Framework

Entity Framework опростява достъпа до данни във вашето приложение, като ви позволява да пишете код за извършване на CRUD (Създаване, четене, актуализиране и изтриване) операции, без необходимостта от директно взаимодействие с основния доставчик на база данни. Има три подхода за моделиране на вашите обекти в Entity Framework: Code First, Model First и Database First. Тази статия разглежда всички тези три подхода и техните плюсове и минуси.

Какво представлява Entity Framework? Защо цялата реклама?

Microsoft Entity Framework е разширена ORM, която ви помага да изолирате обектния модел на вашето приложение от модела на данни. Това е ORM рамка с отворен код за ADO.Net и е включена като част от .Net Framework. Използвайки ORM инструменти, можете да се съсредоточите върху бизнес логиката на приложението и да съхранявате данни в базата данни с много по-малко код. Можете да се възползвате от ORM, за да конвертирате данни между несъвместими системи от тип - можете да съхранявате обектите на домейна си в основната база данни, без да се налага да се притеснявате за вътрешните тънкости относно това как всъщност се съхраняват данните. Entity Framework е зряла ORM от Microsoft и може да се използва с голямо разнообразие от бази данни.

В следващите раздели ще разгледаме всеки от трите подхода за моделиране на обекти, използващи Entity Framework.

Код първо

Подходът Code First ви помага да създадете обекти във вашето приложение, като се фокусирате върху изискванията на домейна. По същество можете да следвате Domain Driven Design (DDD), използвайки този подход. След като обектите ви са дефинирани и конфигурациите уточнени, можете да създавате базата данни в движение, използвайки и двете. Подходът Code First ви дава повече контрол над вашия код - вече не е необходимо да работите с автоматично генериран код. Харесва ми този подход, тъй като това ви дава голяма гъвкавост и контрол. Ако имате готови домейнови класове, винаги бих предпочел този подход, тъй като можете лесно да създадете вашата база данни от домейн класовете.

Недостатъкът на този подход е, че всички промени в основната схема на базата данни ще бъдат загубени; при този подход вашият код определя и създава базата данни. Подходът Code First ви позволява да използвате Entity Framework и да дефинирате модела на обекта без дизайнерските или XML файлове. Можете да използвате подхода POCO (Plain Old CLR Objects), за да дефинирате модела и да генерирате вашата база данни.

При този подход обикновено създавате класове обекти. Ето пример; типичен обект клас е даден по-долу.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

След това трябва да дефинирате контекст на персонализирани данни, като разширите класа DbContext, както е показано по-долу.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

И накрая, трябва да посочите низа на свързване в конфигурационния файл. Ти си готов!

Първо база данни

Можете да използвате подхода Database First, ако базата данни вече е проектирана и е готова. При този подход Entity Data Model (EDM) се създава от основната база данни. Като пример използвате първия подход към базата данни, когато генерирате edmx файлове в Visual Studio IDE от базата данни. Ръчните промени в базата данни са възможни лесно и винаги можете да актуализирате EDM, ако е необходимо (например, ако схемата на основната база данни се промени). За да направите това, просто актуализирайте EDM от базата данни в Visual Studio IDE.

Модел първо

В подхода Model First можете първо да създадете EDM, след което да генерирате базата данни от него. Обикновено бихте създали празен EDM с помощта на съветника за модел на данни за обекти в Visual Studio, дефинирате обектите и техните взаимоотношения в Visual Studio, след което генерирате базата данни от този дефиниран модел. Можете лесно да създавате обекти и да дефинирате техните взаимоотношения и асоциации в дизайнера в Visual Studio. Можете също така да посочите свойството Key и типовете данни за свойствата за вашите обекти, използвайки дизайнера. Можете да използвате частични класове, за да внедрите допълнителни функции във вашите обекти.

Добре, но кога трябва да използвате подхода Model First? Е, ако нито домейн класовете, нито базата данни са готови и предпочитате да дефинирате модела на данни с помощта на визуален дизайнер, този подход е за вас. Въпреки това, както при подхода Code First, при подхода Model First ръчните промени в базата данни ще бъдат загубени, тъй като моделът дефинира базата данни.