Microsofts Entity Framework er en åpen kildekode-objekt-relasjonskartner, eller ORM, for ADO.Net som hjelper deg med å isolere objektmodellen til applikasjonen din fra datamodellen. Entity Framework forenkler datatilgang i applikasjonen din ved å la deg skrive kode for å utføre CRUD (Opprett, Les, Oppdater og Slett) -operasjoner uten å måtte vite hvordan dataene vedholdes i den underliggende databasen.
DbContext fungerer som en bro mellom domeneklassene og databasen. I denne artikkelen vil vi undersøke hvordan vi kan konfigurere DbContext ved hjelp av en forekomst av DbContextOptions for å koble til en database og utføre CRUD-operasjoner ved hjelp av Entity Framework Core-leverandøren.
DbContext forklart
DbContext er en integrert komponent i Entity Framework som representerer en tilkoblingsøkt med databasen. Du kan dra nytte av DbContext for å spørre om data til enhetene dine eller lagre enhetene dine i den underliggende databasen. DbContext in Entity Framework Core har en rekke ansvarsoppgaver:
- Administrere forbindelser
- Spørring av data fra databasen
- Lagrer data i databasen
- Endre sporing
- Caching
- Transaksjonsstyring
I avsnittene som følger vil vi utforske hvordan vi kan jobbe med DbContext i ASP.Net Core.
Opprett et ASP.Net Core-program i Visual Studio
Vi starter med å lage en ASP.Net Core-applikasjon. Merk at dette innlegget forutsetter at Visual Studio 2017 allerede er installert i systemet ditt. Hvis du ikke har Visual Studio 2017 installert, kan du laste ned en kopi her. Følg deretter disse trinnene for å opprette et nytt ASP.Net Core-prosjekt.
- Start Visual Studio 2017 IDE.
- Klikk på Fil -> Ny -> Prosjekt.
- Velg prosjektmalen “ASP.Net Core Web Application”.
- Angi navn og sted for prosjektet.
- Klikk OK.
- I dialogboksen "Nytt ASP.Net Core Web Application" velger du .Net Core.
- Velg ASP.Net Core 2.1 fra rullegardinlisten.
- Velg “Web API” som prosjektmal.
- Ignorer avkrysningsruten "Aktiver Docker-støtte"; vi bruker ikke Docker her.
- Sørg for at meldingen “Ingen godkjenning” vises. vi trenger heller ikke dette.
- Klikk OK
Og det er det! Vi vil bruke dette programmet til å utforske Entity Framework Core i avsnittene som følger.
Opprett en ny DbContext i Entity Framework Core
For å opprette en egendefinert kontekstklasse, bør du utvide DbContext-baseklassen i Entity Framework Core som vist nedenfor.
offentlig klasse CustomContext: DbContext{
offentlig CustomContext (DbContextOptions-alternativer): base (alternativer)
{
}
beskyttet overstyring ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder)
{
// Skriv koden din her for å konfigurere konteksten
}
beskyttet overstyring ugyldig OnModelCreating (ModelBuilder modelBuilder)
{
// Skriv koden din her for å konfigurere modellen
}
}
Se CustomContext-klassen ovenfor. Merk at den godtar en referanse til en forekomst av DbContextOptions-klassen. Denne forekomsten inneholder konfigurasjonsinformasjonen som trengs av DbContext. Du kan også konfigurere DbContext ved hjelp av OnConfiguring-metoden. OnModelCreating-metoden, som godtar en referanse til en forekomst av ModelBuilder-klassen som et argument, brukes til å konfigurere modellen.
I DbContext-klassen har du vanligvis DbSet-egenskapene til enheter som vist i kodebiten nedenfor.
offentlig klasse CustomContext: DbContext{
offentlige CustomContext (DbContextOptions-alternativer): base (alternativer)
{
}
beskyttet overstyring ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder)
{
}
beskyttet overstyring ugyldig OnModelCreating (ModelBuilder modelBuilder)
{
}
offentlige DbSet-forfattere {get; sett; }
offentlige DbSet-blogger {get; sett; }
}
Registrer DbContext med kjøretid for Entity Framework Core
Deretter bør du registrere din egendefinerte DbContext-klasse som en tjeneste i IServiceCollection via ConfigureServices-metoden i oppstartklassen.
offentlig ugyldighet ConfigureServices (IServiceCollection-tjenester){
services.AddMvc (). SetCompatibilityVersion
(CompatibilityVersion.Version_2_1);
services.AddDbContext (alternativer =>
options.UseSqlServer
(Configuration.GetConnectionString (“TestConnection”)));
}
Tilkoblingsstrengen oppnås ved hjelp av IConfiguration-forekomsten. AddDbContext-utvidelsesmetoden brukes til å registrere DbContext som en tjeneste. Legg merke til hvordan en referanse til DbContextOptionsBuilder brukes til å konfigurere DbContextOptions. UseSqlServer-utvidelsesmetoden brukes til å registrere SQL Server-databaseleverandøren med Entity Framework Core-kjøretiden.
Alternativt kan du overstyre OnConfigure-metoden for å registrere SQL Server-databaseleverandøren som vist i kodebiten nedenfor.
beskyttet overstyring ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder){
hvis (! optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer ("TestConnection");
}
}
Bruk DbContext med avhengighetsinjeksjon
For å bruke den tilpassede DbContext vi implementerte i kontrollermetodene, bør du dra nytte av avhengighetsinjeksjon. Følgende kodebit illustrerer hvordan dette kan oppnås.
offentlig klasse ValuesController: ControllerBase{
privat CustomContext dbContext;
public ValuesController (CustomContext customContext)
{
dbContext = customContext;
}
// Andre metoder
}
Og det er alt du trenger å gjøre. Du kan nå utnytte forekomsten av klassen CustomContext i kontrollermetodene dine for å utføre CRUD-operasjoner.
DbContext er konseptuelt som ObjectContext. DbContext representerer en kombinasjon av arbeidsenheten og depotdesignmønstre, og er ansvarlig for enhver interaksjon mellom applikasjonen og databasen i bruk. Jeg vil diskutere flere aspekter av Entity Framework Core i fremtidige innlegg her.