Programmering

Utforsk de ulike tilnærmingene til å modellere enheter i Entity Framework

Entity Framework forenkler datatilgang i applikasjonen din ved at du kan skrive kode for å utføre CRUD (Create, Read, Update and Delete) operasjoner uten behov for å samhandle med den underliggende databaseleverandøren direkte. Det er tre tilnærminger for å modellere enhetene dine i Entity Framework: Code First, Model First og Database First. Denne artikkelen diskuterer alle disse tre tilnærmingene og deres fordeler og ulemper.

Hva er Entity Framework? Hvorfor all sprøytenarkoman?

Microsofts Entity Framework er et utvidet ORM som hjelper deg med å isolere objektmodellen til applikasjonen din fra datamodellen. Det er et open source ORM-rammeverk for ADO.Net og er inkludert som en del av .Net Framework. Ved bruk av ORM-verktøy kan du fokusere på forretningslogikken til applikasjonen og lagre data i databasen med mye mindre kode. Du kan dra nytte av en ORM for å konvertere data mellom inkompatible systemsystemer - du kan lagre domeneobjektene dine i den underliggende databasen uten å måtte bekymre deg for de interne vanskelighetene med hvordan dataene faktisk lagres. Entity Framework er en moden ORM fra Microsoft og kan brukes med et bredt utvalg av databaser.

I avsnittene som følger vil vi utforske hver av de tre tilnærmingene til modellering av enheter ved hjelp av Entity Framework.

Kode først

Code First-tilnærmingen hjelper deg med å opprette enheter i applikasjonen din ved å fokusere på domenekravene. I hovedsak kan du følge Domain Driven Design (DDD) ved å bruke denne tilnærmingen. Når enhetene dine er definert og konfigurasjonene spesifisert, kan du opprette databasen på farten ved hjelp av begge. Code First-tilnærmingen gir deg mer kontroll over koden din - du trenger ikke å jobbe med autogenerert kode lenger. Jeg liker denne tilnærmingen da dette gir deg mye fleksibilitet og kontroll. Hvis du har domeneklassene klare, vil jeg alltid foretrekke denne tilnærmingen da du enkelt kan opprette databasen din fra domeneklassene.

Ulempen med denne tilnærmingen er at eventuelle endringer i det underliggende databaseskjemaet vil gå tapt; i denne tilnærmingen din koden definerer og oppretter databasen. Code First-tilnærmingen lar deg bruke Entity Framework og definere enhetsmodellen uten designer eller XML-filer. Du kan bruke POCO (Plain Old CLR Objects) tilnærming til å definere modellen og generere databasen din.

I denne tilnærmingen vil du vanligvis opprette enhetsklassene. Her er et eksempel; en typisk enhetsklasse er gitt nedenfor.

offentlig klasse Produkt

   {

offentlig int ProductId {get; sett; }

offentlig streng Produktnavn {get; sett; }

offentlig flyte Pris {get; sett; }

   }

Deretter bør du definere en tilpasset datakontekst ved å utvide DbContext-klassen som vist nedenfor.

offentlig klasse Kontekst: DbContext

   {

offentlige DbSet-produkter {get; sett; }

   }

Til slutt bør du spesifisere tilkoblingsstrengen i konfigurasjonsfilen. Du er ferdig!

Database først

Du kan bruke Database First-tilnærmingen hvis databasen allerede er designet og er klar. I denne tilnærmingen blir Entity Data Model (EDM) opprettet fra den underliggende databasen. Som et eksempel bruker du databasens første tilnærming når du genererer edmx-filene i Visual Studio IDE fra databasen. Manuelle endringer i databasen er lett mulig, og du kan alltid oppdatere EDM hvis det er nødvendig (for eksempel hvis skjemaet til den underliggende databasen endres). For å gjøre dette, oppdaterer du bare EDM fra databasen i Visual Studio IDE.

Modell først

I Model First-tilnærmingen kan du opprette EDM først, og deretter generere databasen fra den. Du oppretter vanligvis en tom EDM ved hjelp av veiviseren for enhetsdatamodell i Visual Studio, definerer enhetene og deres forhold i Visual Studio, og genererer deretter databasen fra denne definerte modellen. Du kan enkelt opprette enheter og definere deres relasjoner og tilknytninger i designeren i Visual Studio. Du kan også spesifisere nøkkelegenskapen og datatypene for egenskapene for enhetene dine ved hjelp av designeren. Du kan bruke delklasser for å implementere tilleggsfunksjoner i enhetene dine.

OK, men når skal du bruke Model First-tilnærmingen? Vel, hvis verken domeneklassene eller databasen er klare, og du heller vil definere datamodellen ved hjelp av en visuell designer, er denne tilnærmingen noe for deg. Imidlertid, som i Code First-tilnærmingen, vil manuelle endringer i databasen i Model First-tilnærmingen gå tapt når modellen definerer databasen.

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