ASP.NET Core Web API + Entity Framework Core : Scaffold-DbContext - EP02

Prøv Instrumentet Vårt For Å Eliminere Problemer

Velkommen til del 2 av vår ASP.NET Core Web API og Entity Framework Core-serie! I forrige artikkel , satte vi opp vårt første prosjekt og database. Nå skal vi bruke Stillas-DbContext kommando for å automatisk generere modellklassekode fra vår eksisterende databasestruktur.

Hva er Scaffold-DbContext

Scaffold-DbContext er et Entity Framework Core-verktøy som lager modellklasser for hver tabell i databasen din. Dette kan spare enorme mengder tid ved ikke å måtte definere alle modellklasser og egenskaper manuelt.

Viktige fordeler

  • Rask apputvikling fra eksisterende databaser
  • Automatisk opprettelse av CRUD API-endepunkt
  • Enkel regenerering når databasen endres

Ulemper

  • Potensielle overhentingsproblemer hvis modellene ikke er optimalisert
  • Begrenset kontroll sammenlignet med håndkodingsklasser
  • Vanskeligere håndtering av mange-til-mange relasjoner

For raskt å bygge prototyper og MVP-er, gir Scaffold-DbContext enorme effektivitetsgevinster.



Prosjektoppsett

Sørg for følgende fra Del 1 før du fortsetter:

  • ASP.NET Core Web API-prosjekt opprettet
  • Lokal SQL Server-database lagt til med eksempler på kunde- og ordretabeller
  • Entity Framework Core og Tools-pakker installert

Med grunnlaget på plass kan vi ta i bruk Scaffold-DbContext!

Bruke Scaffold-DbContext

Åpne Package Manager Console

Scaffold-DbContext-kommandoen kjører i Visual Studios Package Manager Console-vindu:

  1. Åpne Visual Studio
  2. Gå til Verktøy > NuGet Package Manager > Package Manager Console

Stillas-DbContext-syntaks

Generell kommandostruktur:

|_+_|

Vi deler nøkkelparametrene:

  • ConnectionString - Databasetilkoblingsstreng, vanligvis fra appsettings.json
  • Forsørger - Dataleverandør som Microsoft.EntityFrameworkCore.SqlServer
  • OutputDir - Destinasjonsmappe for modellklassekode
  • Kontekst - Navn på DbContext-avledet klasse
  • Skjemaer - Valgfrie databaseskjemanavn å inkludere
  • Tabeller - Spesifikke tabeller å generere modeller for
  • Datamerknader - Inkluder valideringsattributter på modellegenskaper
  • Makt - Overskriv eksisterende filer

Eksempelkommandoer

Stillas alle tabeller fra DevDB-databasen:

|_+_|

Stillas bare Kunder bord:

|_+_|

Utfører Scaffold-DbContext

Med Package Manager-konsollen åpen, la oss stillassette databasetabellene våre inn i modellkatalogen.

1. Sjekk tilkoblingsstreng

Vi må referere til tilkoblingsstrengen som er definert i appsettings.json. Etter konvensjon heter den 'DefaultConnection':

|_+_|

2. Kjør Scaffold-DbContext

Ved å bruke standard tilkoblingsstrengen genererer vi modellklasser for både kunder og ordretabeller i mappen Modeller:

|_+_|

3. Utforsk generert kode

Etter litt behandling bør du finne nygenererte modellklasser for kunder og bestillinger, pluss StoreDbContext-kode!

Gjennomgang av stillaskode

De automatisk genererte modellklassene og DbContext danner grunnlaget vi trenger for å begynne å bruke Entity Framework Core-funksjonalitet.

Modeller

Viktige høydepunkter:

  • Én .cs-fil per tabell som Customer.cs og Order.cs
  • Egenskaper samsvarer med kolonnenavn og datatyper
  • [Nøkkel] angir primærnøkkelkolonne
  • Navigasjonsegenskaper definerer relasjoner
  • Datavalideringsattributter inkludert

StoreDbContext Class

Nøkkeldetaljer:

  • Kommer fra Microsoft.EntityFrameworkCore.DbContext
  • DbSet-egenskaper for hvert enhetssett som kunder og bestillinger
  • OnConfiguring knytter databaseleverandør og tilkoblingsstreng
  • OnModelCreating konfigurerer modellbindingsatferd ytterligere

Denne DbContext er hovedbroen mellom vår database og modellrepresentasjoner!

Tester Scaffolded API

Databasekonteksten og modellene skal nå tillate at grunnleggende CRUD-ruter aktiveres automatisk.

Oppdatere database

Bruk først eventuelle modellendringer på selve databasen:

|_+_|

Kjør Web API

Deretter starter du ASP.NET Core-appen for å gjøre API-en tilgjengelig. Standardrutene ser slik ut:

  • GET /api/Kunder
  • GET /api/ordrer

Vi kan ringe disse fra Postman eller nettleseren for å returnere JSON-resultater!

Tilpasse modeller

Mens Scaffold-DbContext genererte anstendig startkode, må vi sannsynligvis finpusse modeller for optimal ytelse.

Fjern ubrukte modeller

Sletting av unødvendige modellklasser reduserer unødvendig oppblåsthet i kontekst:

|_+_|

Legg til metadata

Dekorer modeller ved hjelp av attributter fra System.ComponentModel.DataAnnotations navneområde: |_+_|

Konfigurer relasjoner

Eksplisitt kartlegging av relasjoner unngår konflikter på veien:

|_+_|

Ytterligere tilpasninger

Ytterligere tilpasninger for å forbedre stillaskoden:

  • Legg til modellkonstruktører for innkapsling
  • Få modeller til å implementere grensesnitt for frakobling
  • Utnytt visningsmodeller for å kontrollere dataeksponering
  • Integrer depotmønster for abstraksjon

Etter hvert som appen utvikler seg, refaktorerer modeller kontinuerlig for å møte endrede behov.

Del 1 Sammendrag

I den første artikkelen, vi:

  • Opprettet ASP.NET Core Web API-prosjekt
  • Lagt til lokal SQL Server-database ved hjelp av Visual Studio
  • Installerte Entity Framework Core NuGet-pakker
  • Definerte grunnleggende kunde- og bestillinger-eksempeltabeller
  • Seeded database med testdata

Dette satte grunnlaget for å begynne å bruke Entity Framework Core!

Neste

Med databasekontekst og modeller bygget via stillas, vil vi deretter bruke Entity Framework Core for å utføre faktisk datatilgang:

  • Spørre med LINQ
  • Laster relaterte enheter
  • Sette inn, oppdatere og slette data
  • Transaksjoner

La oss skifte fokus til å utnytte EF Core for å bygge ut hele Web API CRUD-funksjonssettet.

Se Også: