Programiranje

Raziščite različne pristope k modeliranju entitet v Entity Framework

Entity Framework poenostavi dostop do podatkov v vaši aplikaciji, tako da vam omogoča pisanje kode za izvajanje CRUD (ustvarjanje, branje, posodabljanje in brisanje) operacij brez potrebe po neposredni interakciji z osnovnim ponudnikom zbirke podatkov. Obstajajo trije pristopi za modeliranje entitet v Entity Framework: Code First, Model First in Database First. Ta članek obravnava vse te tri pristope ter njihove prednosti in slabosti.

Kaj je entitetni okvir? Zakaj ves hype?

Microsoftov Entity Framework je razširjeni ORM, ki vam pomaga izolirati objektni model vaše aplikacije od podatkovnega modela. Je odprtokodni okvir ORM za ADO.Net in je vključen kot del .Net Framework. Pri uporabi orodij ORM se lahko osredotočite na poslovno logiko aplikacije in shranite podatke v zbirko podatkov z veliko manj kode. ORM lahko izkoristite za pretvorbo podatkov med nezdružljivimi tipskimi sistemi - predmete domene lahko shranite v osnovno bazo podatkov, ne da bi vam bilo treba skrbeti za notranje zapletenosti glede tega, kako so podatki dejansko shranjeni. Entity Framework je zreli ORM Microsofta in se lahko uporablja z najrazličnejšimi bazami podatkov.

V naslednjih razdelkih bomo raziskali vsakega od treh pristopov k modeliranju entitet z uporabo Entity Framework.

Najprej koda

Pristop Code First vam pomaga ustvariti entitete v vaši aplikaciji s poudarkom na zahtevah domene. V bistvu lahko sledite domenskemu oblikovanju (DDD) s tem pristopom. Ko so vaše entitete definirane in nastavljene konfiguracije, lahko bazo podatkov sproti ustvarite z uporabo obeh. Pristop Code First vam daje večji nadzor nad kodo - z avtogenerirano kodo vam ni več treba delati. Ta pristop mi je všeč, saj vam daje veliko prilagodljivosti in nadzora. Če imate razrede domen pripravljene, bi vedno raje uporabil ta pristop, saj lahko zlahka ustvarite svojo bazo podatkov iz razredov domen.

Slaba stran tega pristopa je, da bi se izgubile kakršne koli spremembe osnovne sheme baze podatkov; pri tem pristopu vaša koda definira in ustvari bazo podatkov. Pristop Code First vam omogoča, da uporabite Entity Framework in definirate model entitete brez datotek oblikovalca ali XML. Za določitev modela in generiranje baze podatkov lahko uporabite pristop POCO (navadni stari objekti CLR).

Pri tem pristopu bi običajno ustvarili razrede entitet. Tu je primer; tipičen razred entitet je podan spodaj.

izdelek javnega razreda

   {

public int ProductId {get; set; }

javni niz ProductName {get; set; }

javni plovec Cena {get; set; }

   }

Nato določite kontekst podatkov po meri z razširitvijo razreda DbContext, kot je prikazano spodaj.

javni razred Kontekst: DbContext

   {

javni izdelki DbSet {get; set; }

   }

Nazadnje v konfiguracijski datoteki navedite niz povezave. Končali ste!

Najprej baza podatkov

Pristop Database First lahko uporabite, če je baza podatkov že zasnovana in pripravljena. Pri tem pristopu se entitetni podatkovni model (EDM) ustvari iz osnovne baze podatkov. Kot primer uporabite prvi pristop do baze podatkov, ko iz baze podatkov ustvarite datoteke edmx v Visual Studio IDE. Ročne spremembe baze podatkov so enostavne in EDM lahko po potrebi vedno posodobite (na primer, če se shema osnovne baze podatkov spremeni). Če želite to narediti, preprosto posodobite EDM iz baze podatkov v Visual Studio IDE.

Najprej model

V pristopu Model First lahko najprej ustvarite EDM, nato pa iz njega ustvarite bazo podatkov. Običajno ustvarite prazen EDM s pomočjo čarovnika za entitetni model podatkov v Visual Studio, definirate entitete in njihove odnose v Visual Studio, nato pa iz tega definiranega modela ustvarite bazo podatkov. V oblikovalcu v Visual Studio lahko enostavno ustvarite entitete in definirate njihove odnose in povezave. S pomočjo oblikovalca lahko določite tudi lastnost Key in vrste podatkov za lastnosti za vaše entitete. Delne razrede lahko uporabite za izvajanje dodatnih funkcij v svojih entitetah.

V redu, kdaj pa bi morali uporabiti pristop Model First? No, če niso pripravljeni niti razredi domen niti baza podatkov in bi raje definirali podatkovni model z vizualnim oblikovalcem, je ta pristop za vas. Vendar pa bi se, tako kot pri pristopu Code First, pri pristopu Model First ročne spremembe baze podatkov izgubile, saj model definira bazo podatkov.

$config[zx-auto] not found$config[zx-overlay] not found