Programovanie

Ako používať DbContext v Entity Framework Core

Microsoft Entity Framework je open-source objektovo-relačný mapovač alebo ORM pre ADO.Net, ktorý vám pomôže izolovať objektový model vašej aplikácie od dátového modelu. Entity Framework zjednodušuje prístup k dátam vo vašej aplikácii tým, že vám umožňuje písať kód na vykonávanie operácií CRUD (vytváranie, čítanie, aktualizácia a mazanie) bez toho, aby ste museli vedieť, ako sú dáta v základnej databáze pretrvávané.

DbContext funguje ako most medzi doménovými triedami a databázou. V tomto článku preskúmame, ako môžeme nakonfigurovať DbContext pomocou inštancie DbContextOptions na pripojenie k databáze a vykonávanie operácií CRUD pomocou poskytovateľa Entity Framework Core.

Vysvetlil DbContext

DbContext je neoddeliteľnou súčasťou Entity Framework, ktorá predstavuje reláciu spojenia s databázou. Môžete využiť DbContext na dopytovanie údajov do vašich entít alebo ich ukladanie do základnej databázy. DbContext v Entity Framework Core má množstvo zodpovedností:

  • Správa pripojení
  • Dopytovanie údajov z databázy
  • Ukladanie údajov do databázy
  • Sledovanie zmien
  • Ukladanie do vyrovnávacej pamäte
  • Správa transakcií

V nasledujúcich častiach preskúmame, ako môžeme pracovať s DbContext v ASP.Net Core.

Vytvorte aplikáciu ASP.Net Core v Visual Studio

Začneme vytvorením aplikácie ASP.Net Core. Upozorňujeme, že tento príspevok predpokladá, že Visual Studio 2017 je už vo vašom systéme nainštalovaný. Ak nemáte nainštalované Visual Studio 2017, tu si môžete stiahnuť kópiu. Potom postupujte podľa týchto krokov a vytvorte nový projekt ASP.Net Core.

  1. Spustite Visual Studio 2017 IDE.
  2. Kliknite na položky Súbor -> Nové -> Projekt.
  3. Vyberte šablónu projektu „ASP.Net Core Web Application“.
  4. Zadajte názov a umiestnenie projektu.
  5. Kliknite na tlačidlo OK.
  6. V dialógovom okne „Nová webová aplikácia ASP.Net Core“ vyberte položku .Net Core.
  7. Z rozbaľovacieho zoznamu vyberte ASP.Net Core 2.1.
  8. Ako šablónu projektu vyberte „Web API“.
  9. Ignorujte začiarkavacie políčko „Povoliť podporu Dockeru“; nebudeme tu používať Docker.
  10. Zaistite, aby sa zobrazila správa „Bez overenia“; nebudeme to tiež potrebovať.
  11. Kliknite na tlačidlo OK

A to je všetko! Túto aplikáciu použijeme na preskúmanie Entity Framework Core v nasledujúcich častiach.

Vytvorte nový DbContext v Entity Framework Core

Ak chcete vytvoriť vlastnú kontextovú triedu, mali by ste rozšíriť základnú triedu DbContext v Entity Framework Core, ako je uvedené nižšie.

verejná trieda CustomContext: DbContext

    {

public CustomContext (možnosti DbContextOptions): základ (možnosti)

        {

        }

protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

// Sem napíš svoj kód pre konfiguráciu kontextu

        }

protected override void OnModelCreating (ModelBuilder modelBuilder)

        {

// Sem napíšete svoj kód na konfiguráciu modelu

        }

    }

Pozri triedu CustomContext vyššie. Upozorňujeme, že prijíma odkaz na inštanciu triedy DbContextOptions. Táto inštancia obsahuje informácie o konfigurácii, ktoré vyžaduje DbContext. DbContext môžete tiež nakonfigurovať pomocou metódy OnConfiguring. Na konfiguráciu modelu sa používa metóda OnModelCreating, ktorá ako argument akceptuje odkaz na inštanciu triedy ModelBuilder.

V triede DbContext zvyčajne máte vlastnosti entít DbSet, ako je uvedené v útržku kódu nižšie.

verejná trieda CustomContext: DbContext

    {

public CustomContext (možnosti DbContextOptions): základ (možnosti)

        {

        }

protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

        }

protected override void OnModelCreating (ModelBuilder modelBuilder)

        {

        }

public DbSet Authors {get; sada; }

verejné DbSet blogy {get; sada; }

    }

Zaregistrujte DbContext s runtime Entity Framework Core

Ďalej by ste mali zaregistrovať svoju vlastnú triedu DbContext ako službu v IServiceCollection pomocou metódy ConfigureServices triedy Startup.

  public void ConfigureServices (služby IServiceCollection)

        {

services.AddMvc (). SetCompatibilityVersion

(CompatibilityVersion.Version_2_1);

services.AddDbContext (možnosti =>

options.UseSqlServer

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

        }

Pripojovací reťazec sa získa pomocou inštancie IConfiguration. Na zaregistrovanie DbContext ako služby sa používa metóda rozšírenia AddDbContext. Všimnite si, ako sa odkaz na DbContextOptionsBuilder používa na konfiguráciu DbContextOptions. Metóda rozšírenia UseSqlServer sa používa na registráciu poskytovateľa databázy servera SQL Server s runtime Entity Framework Core.

Prípadne môžete prepísať metódu OnConfigure a zaregistrovať poskytovateľa databázy servera SQL Server, ako je uvedené v útržku kódu nižšie.

protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

    {

if (! optionsBuilder.IsConfigured)

        {

optionsBuilder.UseSqlServer ("TestConnection");

        }

    }

Použite DbContext s vkladaním závislostí

Ak chcete použiť vlastný DbContext, ktorý sme implementovali v metódach radiča, mali by ste využiť injekciu závislostí. Nasledujúci úryvok kódu ilustruje, ako je to možné dosiahnuť.

verejná trieda ValuesController: ControllerBase

    {

private CustomContext dbContext;

public ValuesController (CustomContext customContext)

        {

dbContext = customContext;

        }

// Ostatné metódy

    }

A to je všetko, čo musíte urobiť. Teraz môžete vo svojich metódach radiča využiť inštanciu triedy CustomContext na vykonávanie operácií CRUD.

DbContext je koncepčne podobný ObjectContext. Predstavuje kombináciu jednotky práce a návrhových vzorov úložiska a za každú interakciu medzi aplikáciou a používanou databázou je zodpovedný DbContext. V budúcich príspevkoch sa tu budem venovať ďalším aspektom Entity Framework Core.

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