Programmering

Udforsk de forskellige tilgange til modelenheder i Entity Framework

Entity Framework forenkler dataadgang i din applikation ved at give dig mulighed for at skrive kode for at udføre CRUD (Opret, læs, opdater og slet) operationer uden behov for at interagere med den underliggende databaseudbyder direkte. Der er tre tilgange til at modellere dine enheder i Entity Framework: Code First, Model First og Database First. Denne artikel diskuterer alle disse tre tilgange og deres fordele og ulemper.

Hvad er Entity Framework? Hvorfor al hype?

Microsofts Entity Framework er en udvidet ORM, der hjælper dig med at isolere objektmodellen for din applikation fra datamodellen. Det er en open source ORM-ramme til ADO.Net og er inkluderet som en del af .Net Framework. Ved brug af ORM-værktøjer kan du fokusere på applikationens forretningslogik og gemme data i databasen med meget mindre kode. Du kan drage fordel af en ORM til at konvertere data mellem inkompatible systemsystemer - du kan gemme dine domæneobjekter i den underliggende database uden at skulle bekymre dig om de interne vanskeligheder med, hvordan dataene faktisk gemmes. Entity Framework er en moden ORM fra Microsoft og kan bruges med en lang række databaser.

I de efterfølgende afsnit vil vi undersøge hver af de tre tilgange til modellering af enheder ved hjælp af Entity Framework.

Kode først

Code First-metoden hjælper dig med at oprette enhederne i din applikation ved at fokusere på domænekravene. I det væsentlige kan du følge Domain Driven Design (DDD) ved hjælp af denne tilgang. Når dine enheder er blevet defineret, og konfigurationerne er specificeret, kan du oprette databasen i farten ved hjælp af begge. Code First-tilgangen giver dig mere kontrol over din kode - du behøver ikke længere arbejde med autogenereret kode. Jeg kan godt lide denne tilgang, da dette giver dig en masse fleksibilitet og kontrol. Hvis du har domæneklasserne klar, foretrækker jeg altid denne tilgang, da du nemt kan oprette din database fra domæneklasserne.

Ulempen ved denne tilgang er, at eventuelle ændringer i det underliggende databaseskema går tabt; i denne tilgang definerer og opretter din kode databasen. Code First-metoden giver dig mulighed for at bruge Entity Framework og definere enhedsmodellen uden for designer- eller XML-filerne. Du kan bruge POCO (Plain Old CLR Objects) tilgang til at definere modellen og generere din database.

I denne tilgang opretter du typisk enhedsklasser. Her er et eksempel; en typisk enhedsklasse er angivet nedenfor.

produkt i offentlig klasse

   {

public int ProductId {get; sæt; }

offentlig streng Produktnavn {get; sæt; }

offentlig float Pris {get; sæt; }

   }

Dernæst skal du definere en brugerdefineret datakontekst ved at udvide klassen DbContext som vist nedenfor.

offentlig klasse Kontekst: DbContext

   {

offentlige DbSet-produkter {get; sæt; }

   }

Endelig skal du angive forbindelsesstrengen i konfigurationsfilen. Du er færdig!

Database først

Du kan bruge databaseførste tilgang, hvis databasen allerede er designet og er klar. I denne tilgang oprettes Entity Data Model (EDM) fra den underliggende database. Som et eksempel bruger du databasens første tilgang, når du genererer edmx-filerne i Visual Studio IDE fra databasen. Manuelle ændringer i databasen er let mulige, og du kan altid opdatere EDM, hvis det er nødvendigt (for eksempel hvis skemaet for den underliggende database ændres). For at gøre dette skal du blot opdatere EDM fra databasen i Visual Studio IDE.

Model først

I Model First-metoden kan du oprette EDM først og derefter generere databasen ud fra den. Du opretter typisk en tom EDM ved hjælp af guiden Enhedsdatamodel i Visual Studio, definerer enhederne og deres forhold i Visual Studio og genererer derefter databasen fra denne definerede model. Du kan nemt oprette enheder og definere deres forhold og tilknytninger i designeren i Visual Studio. Du kan også angive nøgleegenskaben og datatyperne for egenskaberne for dine enheder ved hjælp af designeren. Du kan bruge delvise klasser til at implementere yderligere funktioner i dine enheder.

OK, men hvornår skal du bruge Model First-tilgangen? Nå, hvis hverken domæneklasserne eller databasen er klar, og du hellere vil definere datamodellen ved hjælp af en visuel designer, er denne tilgang noget for dig. Som i Code First-metoden ville manuelle ændringer i databasen i Model First-tilgangen gå tabt, da modellen definerer databasen.