Programavimas

Kaip naudoti „DbContext“ „Entity Framework Core“

„Microsoft Entity Framework“ yra ADO.Net atvirojo kodo objektų-reliacijų žemėlapis arba ORM, kuris padeda izoliuoti programos objekto modelį nuo duomenų modelio. „Entity Framework“ supaprastina prieigą prie duomenų jūsų programoje, leisdama jums rašyti kodą, kad atliktumėte CRUD (kūrimo, skaitymo, atnaujinimo ir ištrynimo) operacijas, nežinodami, kaip duomenys išlieka pagrindinėje duomenų bazėje.

„DbContext“ veikia kaip tiltas tarp domenų klasių ir duomenų bazės. Šiame straipsnyje mes išnagrinėsime, kaip mes galime sukonfigūruoti „DbContext“ naudodami „DbContextOptions“ egzempliorių prisijungti prie duomenų bazės ir atlikti CRUD operacijas naudodami „Entity Framework Core“ teikėją.

„DbContext“ paaiškino

„DbContext“ yra neatskiriama „Entity Framework“ sudedamoji dalis, atstovaujanti ryšio sesijai su duomenų baze. Galite pasinaudoti „DbContext“ pranašumais, norėdami pateikti užklausą duomenims į savo objektus arba išsaugoti savo subjektus pagrindinėje duomenų bazėje. „DbContext in Entity Framework Core“ turi daugybę pareigų:

  • Ryšių valdymas
  • Užklausa duomenų iš duomenų bazės
  • Duomenų išsaugojimas duomenų bazėje
  • Keisti stebėjimą
  • Talpykla
  • Sandorių valdymas

Tolesniuose skyriuose mes ištirsime, kaip mes galime dirbti su „DbContext“ ASP.Net Core.

Sukurkite „ASP.Net Core“ programą „Visual Studio“

Pradėsime nuo ASP.Net Core programos sukūrimo. Atminkite, kad šiame įraše daroma prielaida, kad „Visual Studio 2017“ jau įdiegta jūsų sistemoje. Jei „Visual Studio 2017“ neįdiegta, galite atsisiųsti kopiją čia. Tada atlikite šiuos veiksmus, kad sukurtumėte naują ASP.Net Core projektą.

  1. Paleiskite „Visual Studio 2017 IDE“.
  2. Spustelėkite Failas -> Naujas -> Projektas.
  3. Pasirinkite projekto šabloną „ASP.Net Core Web Application“.
  4. Nurodykite savo projekto pavadinimą ir vietą.
  5. Spustelėkite Gerai.
  6. Dialogo lange „Nauja ASP.Net Core Web Application“ pasirinkite .Net Core.
  7. Išskleidžiamajame sąraše pasirinkite ASP.Net Core 2.1.
  8. Kaip projekto šabloną pasirinkite „Web API“.
  9. Nepaisykite žymės langelio „Įgalinti„ Docker “palaikymą“; čia nenaudosime „Docker“.
  10. Įsitikinkite, kad rodomas pranešimas „Nėra autentifikavimo“; mums taip pat nereikės.
  11. Spustelėkite Gerai

Štai ir viskas! Šią programą naudosime „Entity Framework Core“ tyrimui tolesniuose skyriuose.

Sukurkite naują „DbContext“ „Entity Framework Core“

Norėdami sukurti pasirinktinę konteksto klasę, turėtumėte išplėsti „DbContext“ pagrindinę klasę „Entity Framework Core“, kaip parodyta žemiau.

viešoji klasė „CustomContext“: „DbContext“

    {

viešasis „CustomContext“ („DbContextOptions“ parinktys): bazė (parinktys)

        {

        }

apsaugotas nepaisymas negaliojančių „OnConfiguring“ („DbContextOptionsBuilder“ optionsBuilder)

        {

// Parašykite savo kodą čia, kad sukonfigūruotumėte kontekstą

        }

apsaugotas nepaisymas negaliojančio „OnModelCreating“ („ModelBuilder“ modelBuilder)

        {

// Norėdami sukonfigūruoti modelį, čia parašykite savo kodą

        }

    }

Žr. Aukščiau esančią „CustomContext“ klasę. Atminkite, kad ji priima nuorodą į „DbContextOptions“ klasės egzempliorių. Šiame egzemplioriuje yra konfigūracijos informacija, reikalinga „DbContext“. Taip pat galite sukonfigūruoti „DbContext“ naudodami „OnConfiguring“ metodą. Modelio konfigūravimui naudojamas „OnModelCreating“ metodas, kuris kaip argumentą priima nuorodą į „ModelBuilder“ klasės egzempliorių.

DbContext klasėje paprastai turite objektų DbSet ypatybes, kaip parodyta toliau pateiktame kodo fragmente.

viešoji klasė „CustomContext“: „DbContext“

    {

viešasis „CustomContext“ („DbContextOptions“ parinktys): bazė (parinktys)

        {

        }

apsaugotas nepaisymas negaliojančių „OnConfiguring“ („DbContextOptionsBuilder“ optionsBuilder)

        {

        }

apsaugotas nepaisymas negaliojančio „OnModelCreating“ („ModelBuilder“ modelBuilder)

        {

        }

viešieji „DbSet“ autoriai {get; rinkinys; }

vieši DbSet tinklaraščiai {get; rinkinys; }

    }

Užregistruokite „DbContext“ naudodami „Entity Framework Core“ vykdymo laiką

Tada turėtumėte užregistruoti pasirinktinę „DbContext“ klasę kaip paslaugą „IServiceCollection“ naudodami „Startup“ klasės „ConfigureServices“ metodą.

  public void „ConfigureServices“ („IServiceCollection“ paslaugos)

        {

paslaugos. „AddMvc“ (). „SetCompatibilityVersion“

(„CompatibilityVersion.Version_2_1“);

paslaugos.AddDbContext (parinktys =>

parinktys.UseSqlServer

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

        }

Ryšio eilutė gaunama naudojant „IConfiguration“ egzempliorių. „AddDbContext“ plėtinio metodas naudojamas „DbContext“ registruoti kaip paslaugą. Atkreipkite dėmesį, kaip nuoroda į „DbContextOptionsBuilder“ naudojama konfigūruojant „DbContextOptions“. „UseSqlServer“ plėtinio metodas naudojamas registruojant „SQL Server“ duomenų bazės teikėją „Entity Framework Core“ vykdymo metu.

Arba galite nepaisyti „OnConfigure“ metodo, kad užregistruotumėte „SQL Server“ duomenų bazės teikėją, kaip parodyta toliau pateiktame kodo fragmente.

apsaugotas nepaisymas negaliojančių „OnConfiguring“ („DbContextOptionsBuilder“ optionsBuilder)

    {

jei (! optionsBuilder.IsConfigured)

        {

optionsBuilder.UseSqlServer ("TestConnection");

        }

    }

Naudokite „DbContext“ su priklausomybės injekcija

Norėdami naudoti pasirinktinį „DbContext“, kurį įdiegėme valdiklio metoduose, turėtumėte pasinaudoti priklausomybės injekcija. Šis kodo fragmentas parodo, kaip tai galima pasiekti.

viešosios klasės „ValuesController“: „ControllerBase“

    {

privatus „CustomContext“ dbContext;

public ValuesController („CustomContext customContext“)

        {

dbContext = customContext;

        }

// Kiti metodai

    }

Ir tai viskas, ką jums reikia padaryti. Dabar galite naudoti „CustomContext“ klasės egzempliorių valdiklio metoduose, kad atliktumėte CRUD operacijas.

DbContext konceptualiai panašus į ObjectContext. Atvaizduodamas darbo vieneto ir saugyklos dizaino modelių derinį, „DbContext“ yra atsakingas už bet kokią programos ir naudojamos duomenų bazės sąveiką. Aptarsiu papildomus „Entity Framework Core“ aspektus būsimuose įrašuose čia.

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