Programmering

Hvordan bruke DbContext i Entity Framework Core

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.

  1. Start Visual Studio 2017 IDE.
  2. Klikk på Fil -> Ny -> Prosjekt.
  3. Velg prosjektmalen “ASP.Net Core Web Application”.
  4. Angi navn og sted for prosjektet.
  5. Klikk OK.
  6. I dialogboksen "Nytt ASP.Net Core Web Application" velger du .Net Core.
  7. Velg ASP.Net Core 2.1 fra rullegardinlisten.
  8. Velg “Web API” som prosjektmal.
  9. Ignorer avkrysningsruten "Aktiver Docker-støtte"; vi bruker ikke Docker her.
  10. Sørg for at meldingen “Ingen godkjenning” vises. vi trenger heller ikke dette.
  11. 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.

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