Programmering

Sådan bruges DbContext i Entity Framework Core

Microsofts Entity Framework er en open source-objektrelationskortlægger, eller ORM, til ADO.Net, der hjælper dig med at isolere objektmodellen i din applikation fra datamodellen. Entity Framework forenkler dataadgang i din applikation ved at lade dig skrive kode for at udføre CRUD (Opret, læse, opdatere og slette) operationer uden at skulle vide, hvordan dataene vedholdes i den underliggende database.

DbContext fungerer som en bro mellem domæneklasserne og databasen. I denne artikel undersøger vi, hvordan vi kan konfigurere DbContext ved hjælp af en forekomst af DbContextOptions til at oprette forbindelse til en database og udføre CRUD-operationer ved hjælp af Entity Framework Core-udbyderen.

DbContext forklaret

DbContext er en integreret komponent i Entity Framework, der repræsenterer en forbindelsessession med databasen. Du kan drage fordel af DbContext til at forespørge data i dine enheder eller gemme dine enheder i den underliggende database. DbContext in Entity Framework Core har en række ansvarsområder:

  • Håndtering af forbindelser
  • Forespørgsel om data fra databasen
  • Gemme data i databasen
  • Skift sporing
  • Caching
  • Transaktionsstyring

I de følgende afsnit vil vi undersøge, hvordan vi kan arbejde med DbContext i ASP.Net Core.

Opret en ASP.Net Core-applikation i Visual Studio

Vi starter med at oprette en ASP.Net Core-applikation. Bemærk, at dette indlæg antager, at Visual Studio 2017 allerede er installeret i dit system. Hvis du ikke har Visual Studio 2017 installeret, kan du downloade en kopi her. Følg derefter disse trin for at oprette et nyt ASP.Net Core-projekt.

  1. Start Visual Studio 2017 IDE.
  2. Klik på File -> New -> Project.
  3. Vælg projektskabelonen “ASP.Net Core Web Application”.
  4. Angiv navn og placering til dit projekt.
  5. Klik på OK.
  6. I dialogboksen "Ny ASP.Net Core-webapplikation" skal du vælge .Net Core.
  7. Vælg ASP.Net Core 2.1 fra rullelisten.
  8. Vælg "Web API" som projektskabelon.
  9. Ignorer afkrydsningsfeltet "Aktivér Docker-support"; vi bruger ikke Docker her.
  10. Sørg for, at meddelelsen "Ingen godkendelse" vises; vi har heller ikke brug for dette.
  11. Klik på OK

Og det er det! Vi bruger denne applikation til at udforske Entity Framework Core i de efterfølgende afsnit.

Opret en ny DbContext i Entity Framework Core

For at oprette en brugerdefineret kontekstklasse skal du udvide DbContext-baseklassen i Entity Framework Core som vist nedenfor.

offentlig klasse CustomContext: DbContext

    {

offentlige CustomContext (DbContextOptions muligheder): base (optioner)

        {

        }

beskyttet tilsidesættelse ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

// Skriv din kode her for at konfigurere konteksten

        }

beskyttet tilsidesættelse ugyldig OnModelCreating (ModelBuilder modelBuilder)

        {

// Skriv din kode her for at konfigurere modellen

        }

    }

Se klassen CustomContext ovenfor. Bemærk, at den accepterer en henvisning til en forekomst af klassen DbContextOptions. Denne forekomst indeholder de konfigurationsoplysninger, der er nødvendige af DbContext. Du kan også konfigurere DbContext ved hjælp af OnConfiguring-metoden. OnModelCreating-metoden, der accepterer en henvisning til en forekomst af ModelBuilder-klassen som et argument, bruges til at konfigurere modellen.

I klassen DbContext har du typisk DbSet-egenskaberne for enheder som vist i kodestykket nedenfor.

offentlig klasse CustomContext: DbContext

    {

offentlige CustomContext (DbContextOptions muligheder): base (optioner)

        {

        }

beskyttet tilsidesættelse ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

        }

beskyttet tilsidesættelse ugyldig OnModelCreating (ModelBuilder modelBuilder)

        {

        }

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

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

    }

Registrer DbContext med Entity Framework Core runtime

Dernæst skal du registrere din tilpassede DbContext-klasse som en tjeneste i IServiceCollection via metoden ConfigureServices i Startup-klassen.

  offentlig ugyldighed ConfigureServices (IServiceCollection-tjenester)

        {

services.AddMvc (). SetCompatibilityVersion

(CompatibilityVersion.Version_2_1);

services.AddDbContext (optioner =>

options.UseSqlServer

(Configuration.GetConnectionString (“TestConnection”)));

        }

Forbindelsesstrengen opnås ved hjælp af IConfiguration-forekomsten. AddDbContext-udvidelsesmetoden bruges til at registrere DbContext som en tjeneste. Bemærk, hvordan en henvisning til DbContextOptionsBuilder bruges til at konfigurere DbContextOptions. Metoden UseSqlServer-udvidelse bruges til at registrere SQL Server-databaseleverandøren med Entity Framework Core-runtime.

Alternativt kan du tilsidesætte OnConfigure-metoden for at registrere SQL Server-databaseleverandøren som vist i kodestykket nedenfor.

beskyttet tilsidesættelse ugyldig OnConfiguring (DbContextOptionsBuilder optionsBuilder)

    {

hvis (! optionsBuilder.IsConfigured)

        {

optionsBuilder.UseSqlServer ("TestConnection");

        }

    }

Brug DbContext med afhængighedsinjektion

For at bruge den tilpassede DbContext, vi implementerede i controller-metoderne, skal du drage fordel af afhængighedsinjektion. Følgende kodestykke illustrerer, hvordan dette kan opnås.

public class ValuesController: ControllerBase

    {

privat CustomContext dbContext;

public ValuesController (CustomContext customContext)

        {

dbContext = customContext;

        }

// Andre metoder

    }

Og det er alt hvad du skal gøre. Du kan nu udnytte forekomsten af ​​klassen CustomContext i dine controller-metoder til at udføre CRUD-operationer.

DbContext er konceptuelt ligesom ObjectContext. DbContext repræsenterer en kombination af arbejdsenheden og arkivdesignmønstre og er ansvarlig for enhver interaktion mellem applikationen og den anvendte database. Jeg diskuterer yderligere aspekter af Entity Framework Core i fremtidige indlæg her.

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