Programiranje

Kako uporabiti DbContext v jedru Entity Framework

Microsoftov Entity Framework je odprtokodni objektno-relacijski preslikavalnik ORM za ADO.Net, ki vam pomaga izolirati objektni model vaše aplikacije od podatkovnega modela. Entity Framework poenostavlja dostop do podatkov v vaši aplikaciji, saj vam omogoča pisanje kode za izvajanje CRUD (ustvarjanje, branje, posodabljanje in brisanje) operacij, ne da bi morali vedeti, kako se podatki hranijo v osnovni bazi podatkov.

DbContext deluje kot most med razredi domen in bazo podatkov. V tem članku bomo preučili, kako lahko konfiguriramo DbContext z uporabo primerka DbContextOptions za povezavo z bazo podatkov in izvajanje operacij CRUD z uporabo ponudnika Entity Framework Core.

DbContext je pojasnil

DbContext je sestavni del Entity Framework, ki predstavlja sejo povezave z bazo podatkov. DbContext lahko izkoristite za poizvedbo podatkov v entitetah ali shranjevanje entitet v osnovno bazo podatkov. DbContext v jedru Entity Framework ima številne odgovornosti:

  • Upravljanje povezav
  • Poizvedovanje po podatkih iz baze podatkov
  • Shranjevanje podatkov v bazo podatkov
  • Spremljanje sprememb
  • Predpomnjenje
  • Upravljanje transakcij

V naslednjih razdelkih bomo raziskali, kako lahko delamo z DbContextom v ASP.Net Core.

Ustvarite aplikacijo ASP.Net Core v Visual Studio

Začeli bomo z ustvarjanjem aplikacije ASP.Net Core. Upoštevajte, da ta objava predpostavlja, da je Visual Studio 2017 že nameščen v vašem sistemu. Če Visual Studio 2017 ni nameščen, lahko kopijo prenesete tukaj. Nato sledite tem korakom, da ustvarite nov projekt ASP.Net Core.

  1. Zaženite Visual Studio 2017 IDE.
  2. Kliknite Datoteka -> Novo -> Projekt.
  3. Izberite predlogo projekta »ASP.Net Core Web Application«.
  4. Navedite ime in lokacijo za svoj projekt.
  5. Kliknite V redu.
  6. V pogovornem oknu »Nova spletna aplikacija ASP.Net Core« izberite .Net Core.
  7. Na spustnem seznamu izberite ASP.Net Core 2.1.
  8. Kot predlogo projekta izberite “Web API”.
  9. Prezri potrditveno polje »Omogoči podporo za Docker«; tukaj ne bomo uporabljali Dockerja.
  10. Prepričajte se, da se prikaže sporočilo »No Authentication«; tudi tega ne bomo potrebovali.
  11. Kliknite V redu

In to je to! To aplikacijo bomo uporabili za raziskovanje jedra Entity Framework v naslednjih razdelkih.

Ustvarite nov DbContext v jedru Entity Framework

Če želite ustvariti razred Context po meri, morate razširiti osnovni razred DbContext v jedru Entity Framework, kot je prikazano spodaj.

javni razred CustomContext: DbContext

    {

javni CustomContext (možnosti DbContextOptions): osnova (možnosti)

        {

        }

zaščitena razveljavitev void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

// Tukaj napišite kodo za konfiguracijo konteksta

        }

zaščitena razveljavitev void OnModelCreating (ModelBuilder modelBuilder)

        {

// Tukaj napišite kodo za konfiguracijo modela

        }

    }

Glejte razred CustomContext zgoraj. Upoštevajte, da sprejema sklic na primerek razreda DbContextOptions. Ta primerek vsebuje informacije o konfiguraciji, ki jih potrebuje DbContext. DbContext lahko konfigurirate tudi z metodo OnConfiguring. Za konfiguracijo modela se uporablja metoda OnModelCreating, ki kot argument sprejme sklic na primerek razreda ModelBuilder.

V razredu DbContext imate običajno lastnosti DbSet entitet, kot je prikazano v spodnjem delčku kode.

javni razred CustomContext: DbContext

    {

javni CustomContext (možnosti DbContextOptions): osnova (možnosti)

        {

        }

zaščitena razveljavitev void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

        {

        }

zaščitena razveljavitev void OnModelCreating (ModelBuilder modelBuilder)

        {

        }

javni avtorji DbSet {get; set; }

javni blogi DbSet {get; set; }

    }

Registrirajte DbContext z izvajalnim okoljem Entity Framework Core

Nato morate svoj razred DbContext po meri registrirati kot storitev v IServiceCollection prek metode ConfigureServices razreda Startup.

  public void ConfigureServices (storitve IServiceCollection)

        {

services.AddMvc (). SetCompatibilityVersion

(CompatibilityVersion.Version_2_1);

services.AddDbContext (možnosti =>

možnosti.UseSqlServer

(Configuration.GetConnectionString (»TestConnection«)));

        }

Niz povezave dobimo z uporabo primerka IConfiguration. Metoda razširitve AddDbContext se uporablja za registracijo DbContext kot storitve. Upoštevajte, kako se sklic na DbContextOptionsBuilder uporablja za konfiguriranje DbContextOptions. Metoda razširitve UseSqlServer se uporablja za registracijo ponudnika zbirke podatkov SQL Server z izvajalnim okoljem Entity Framework Core.

Lahko pa tudi preglasite metodo OnConfigure, da registrirate ponudnika zbirke podatkov SQL Server, kot je prikazano v spodnjem delčku kode.

zaščitena razveljavitev void OnConfiguring (DbContextOptionsBuilder optionsBuilder)

    {

if (! optionsBuilder.IsConfigured)

        {

optionsBuilder.UseSqlServer ("TestConnection");

        }

    }

Uporabite DbContext z injekcijo odvisnosti

Če želite uporabiti prilagojeni DbContext, ki smo ga implementirali v metode krmilnika, morate izkoristiti vbrizgavanje odvisnosti. Naslednji delček kode prikazuje, kako je to mogoče doseči.

javni razred ValuesController: ControllerBase

    {

zasebno CustomContext dbContext;

javni ValuesController (CustomContext customContext)

        {

dbContext = customContext;

        }

// Druge metode

    }

In to je vse, kar morate storiti. Zdaj lahko primerek razreda CustomContext uporabite v metodah krmilnika za izvajanje operacij CRUD.

DbContext je konceptualno podoben ObjectContext. DbContext, ki predstavlja kombinacijo enote dela in vzorcev oblikovanja repozitorija, je odgovoren za kakršno koli interakcijo med aplikacijo in bazo podatkov v uporabi. O dodatnih vidikih Entity Framework Core bom razpravljal v prihodnjih objavah tukaj.

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