Istražite različite pristupe modelima entiteta u Entity Framework-u

Entity Framework pojednostavljuje pristup podacima u vašoj aplikaciji omogućavajući vam pisanje koda za izvođenje CRUD (Stvaranje, čitanje, ažuriranje i brisanje) operacija bez potrebe za izravnom interakcijom s temeljnim davateljem baze podataka. Postoje tri pristupa za modeliranje vaših entiteta u Entity Framework-u: Prvo kod, prvi model i baza podataka prvo. Ovaj članak razmatra sva ova tri pristupa i njihove prednosti i nedostatke.

Što je entitetski okvir? Zašto sav taj hype?

Microsoftov Entity Framework prošireni je ORM koji vam pomaže izolirati objektni model vaše aplikacije od podatkovnog modela. To je okvir otvorenog koda ORM za ADO.Net i uključen je kao dio .Net Framework. Korištenjem ORM alata možete se usredotočiti na poslovnu logiku aplikacije i pohraniti podatke u bazu podataka s mnogo manje koda. Možete iskoristiti ORM za pretvaranje podataka između nekompatibilnih tipskih sustava - možete pohraniti objekte svoje domene u temeljnu bazu podataka, a da ne brinete o internim zamršenim načinima na koji se podaci zapravo pohranjuju. Entity Framework je zreli ORM tvrtke Microsoft i može se koristiti s raznim bazama podataka.

U sljedećim odjeljcima istražit ćemo svaki od tri pristupa modeliranju entiteta pomoću Entity Framework-a.

Prvo kod

Pristup Code First pomaže vam da stvorite entitete u svojoj aplikaciji usredotočujući se na zahtjeve domene. U osnovi možete slijediti Domain Driven Design (DDD) koristeći ovaj pristup. Nakon što definirate entitete i odredite konfiguracije, možete stvoriti bazu podataka u letu koristeći oboje. Pristup Code First daje vam veću kontrolu nad kodom - više ne morate raditi s automatski generiranim kodom. Sviđa mi se ovaj pristup jer vam ovo daje veliku fleksibilnost i kontrolu. Ako imate pripremljene klase domene, uvijek bih preferirao ovaj pristup jer možete lako stvoriti bazu podataka iz klase domene.

Loša strana ovog pristupa je da bi se izgubile sve promjene u osnovnoj shemi baze podataka; u ovom pristupu vaš kod definira i kreira bazu podataka. Pristup Code First omogućuje vam upotrebu Entity Framework-a i definiranje modela entiteta bez dizajnerskih ili XML datoteka. Možete koristiti pristup POCO (obični stari CLR objekti) za definiranje modela i generiranje baze podataka.

U ovom bi pristupu obično kreirali klase entiteta. Evo primjera; tipična klasa entiteta navedena je u nastavku.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

Dalje, trebali biste definirati prilagođeni kontekst podataka proširivanjem klase DbContext kao što je prikazano u nastavku.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

Na kraju, trebali biste navesti niz veze u konfiguracijskoj datoteci. Ti si gotov!

Baza podataka prva

Pristup Database First možete koristiti ako je baza podataka već dizajnirana i spremna. U ovom pristupu, entitetni model podataka (EDM) kreira se iz temeljne baze podataka. Kao primjer, koristite prvi pristup bazi podataka kada generirate edmx datoteke u Visual Studio IDE-u iz baze podataka. Ručne promjene baze podataka moguće su lako, a EDM uvijek možete ažurirati ako je potrebno (na primjer, ako se promijeni shema osnovne baze podataka). Da biste to učinili, jednostavno ažurirajte EDM iz baze podataka u Visual Studio IDE-u.

Model prvo

U pristupu Model First možete prvo stvoriti EDM, a zatim generirati bazu podataka iz njega. Tipično biste kreirali prazan EDM pomoću čarobnjaka za model entiteta u Visual Studiju, definirali entitete i njihove odnose u Visual Studiju, a zatim generirali bazu podataka iz ovog definiranog modela. Jednostavno možete stvoriti entitete i definirati njihove odnose i asocijacije u dizajneru u Visual Studiju. Također možete odrediti svojstvo Ključ i vrste podataka za svojstva za svoje entitete pomoću dizajnera. Djelomične klase možete koristiti za implementaciju dodatnih značajki u svojim entitetima.

OK, ali kada biste trebali koristiti pristup Model First? Pa, ako ni klase domene ni baza podataka nisu spremne i radije biste definirali model podataka pomoću vizualnog dizajnera, ovaj je pristup za vas. Međutim, kao u pristupu Code First, u pristupu Model First ručne promjene u bazi podataka izgubit će se jer model definira bazu podataka.