Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 22846|Atsakyti: 0

[.NET branduolys] 【Praktinė kova】ASP.NET "Core's Entity Framework Core" įvadinė pamoka

[Kopijuoti nuorodą]
Paskelbta 2019-05-06 15:38:54 | | | |
"Entity Framework" (EF) "Core" yra lengva, išplečiama, atvirojo kodo ir kelių platformų populiarios "Entity Framework" duomenų prieigos technologijos versija.

EF Core gali būti naudojamas kaip objektų reliacinis žemėlapis (O/RM), kad .NET kūrėjai galėtų dirbti su duomenų bazėmis su .NET objektais, kad jiems nereikėtų dažnai rašyti didžiosios dalies duomenų prieigos kodo.

Duomenų bazės teikėjas:Hipersaito prisijungimas matomas.

Šiame straipsnyje naudojama aplinka:

  • Atviri įrankiai: VS 2017
  • DotNet versija: 2.1.301
  • Duomenų bazė: SQL Sever 2012


Sukurkite projektą



1: BaiDuPan.WebUI yra ASP.NET sukurti pagrindinę žiniatinklio programą;



2: BaiDuPan.DomainModel yra sukurti klasės biblioteką (.NET Core);

Objekto sistemos pagrindinės nuorodos įtraukimas

Sukurta kartu su vs2017. NET Framework projektas, pridėdami ef 6, galite jį tiesiogiai pridėti dešiniuoju pelės mygtuku spustelėdami projektą, kaip parodyta paveikslėlyje žemiau:



Tačiau EF branduolių negalima pridėti aukščiau nurodytu būdu.

PM komanda:


Aukščiau pateikta nutartimiPrograma automatiškai prideda reikiamus priklausomybės paketusTaigi, nereikia pridėti "Microsoft.EntityFrameworkCore" paketo.

Konteksto ir objekto modelių įtraukimas

Filmų modeliai:


PanDb duomenų bazės kontekstas:

Paleisties klasė, kuri prideda duomenų bazės konteksto priklausomybės injekciją (Čia turite pridėti "DomainModel" nuorodą į "WebUI"):


Aukščiau pateiktas kodas reikalauja, kad projektas nurodytų Microsoft.EntityFrameworkCore.SqlServer, tačiau BaiDuPan.WebUI nereikia nurodyti Microsoft.EntityFrameworkCore.SqlServer, kodėl apie klaidą nepranešama?

Microsoft.AspNetCore.App pakete yra visos "ASP.NET Core 2.1" ir naujesnės versijos bei "Entity Framework Core 2.1" ir naujesnės versijos funkcijos. Numatytieji projektų šablonai, skirti ASP.NET Core 2.1 ir naujesnėms versijoms, naudoja šį paketą. Microsoft.AspNetCore.App paketai rekomenduojami programoms su "ASP.NET Core 2.1" ir naujesnėmis versijomis bei "Entity Framework Core 2.1" ir naujesnėmis versijomis.


appsettings.json Konfigūruokite duomenų bazės ryšio eilutę:


Pabandykite pradėti projektą su šia klaida:

Klaida NU1107 aptinka versijos konfliktą Microsoft.EntityFrameworkCore. Nuoroda į paketą tiesiai iš projekto išsprendžia šią problemą.
BaiDuPan.WebUI -> BaiDuPan.DomainModel -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4)
BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 & & < 2.2.0).        BaiDuPan.WebUI C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj 1       

Priežastis ta, kad tarp dviejų projektų yra versijos konfliktas, pabandykite įdiegti aukštesnę ef core versiją BaiDuPan.WebUI, nauja klaida yra tokia:

PM> diegimo paketas Microsoft.EntityFrameworkCore.SqlServer -versija 2.2.4
  GAUTIhttps://api.nuget.org/v3/registr ... qlserver/index.json
  TALPYKLAhttps://api.nuget.org/v3/registr ... qlserver/index.json
Grąžinamas C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj paketas...
NU1608: 检测到的包版本在依赖项约束之外: Microsoft.AspNetCore.App 2.1.1 需要 Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0),但版本 Microsoft.EntityFrameworkCore.SqlServer 2.2.4 已解决。
Diegimo paketas: NU1107: Microsoft.EntityFrameworkCore aptiktas versijų konfliktas. Nuoroda į paketą tiesiai iš projekto išsprendžia šią problemą.
BaiDuPan.WebUI -> Microsoft.EntityFrameworkCore.SqlServer 2.2.4 -> Microsoft.EntityFrameworkCore.Relational 2.2.4 -> Microsoft.EntityFrameworkCore (>= 2.2.4)
BaiDuPan.WebUI -> Microsoft.AspNetCore.App 2.1.1 -> Microsoft.EntityFrameworkCore (>= 2.1.1 & & < 2.2.0).
Vietos eilutė: 1 Simboliai: 1
+ Įdiegti paketą Microsoft.EntityFrameworkCore.SqlServer -2.2 versija. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified : (:) [Install-Package], Išimtis
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Install-Package: paketo atkūrimas nepavyko. "BaiDuPan.WebUI" paketo pakeitimų atšaukimas.
Vietos eilutė: 1 Simboliai: 1
+ Įdiegti paketą Microsoft.EntityFrameworkCore.SqlServer -2.2 versija. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified : (:) [Install-Package], Išimtis
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

Laikas Apred: 00:00:01.4208784
PM>



Ką daryti? Sprendimas yra toks:

Sumažinus versiją, BaiDuPan.WebUI projektas nurodo Microsoft.EntityFrameworkCore 2.1.1, todėl iš naujo vykdome komandą nuget projekte BaiDuPan.DomainModel taip:

Tokiu būdu garantuojame, kad visi projektai turi tą pačią "EF Core" versiją.

Inicijuoti duomenų bazę

Duomenų bazė ir lentelė sėkmingai sukurtos, kaip parodyta šiame paveikslėlyje:



"MovieController" valdiklio pridėjimas

Kodas yra toks:

Indekso metodas yra užklausa visų duomenų bazės filmo lentelėje, o kūrimo metodas yra pridėti naujų duomenų, pabandykime pridėti duomenų dalį ir paprašyti jų paštininkui, kaip parodyta paveikslėlyje žemiau:

Hipersaito prisijungimas matomas.POST užklausa


Programa galėjo veikti sklandžiai, jokių išimčių nebuvo išmesta, įrodant, kad įterpimas buvo sėkmingas, ir prieiga buvo bandyta:Hipersaito prisijungimas matomas.Užklauskite visus duomenis, kaip parodyta paveikslėlyje žemiau:



Kalbant apie modifikacijas ir ištrynimus, tai savaime suprantama!

Išteklių:

Subjekto sistemos branduolys:Hipersaito prisijungimas matomas.

ASP.NET branduolys:Hipersaito prisijungimas matomas.

(Pabaiga)


Vertinimas pagal

Dalyvių skaičius1MB+1 Prisidėti prie+1 Žlugimo priežastis
Admin + 1 + 1 Labai galingas!

Peržiūrėti visus įvertinimus





Ankstesnis:Ar yra meistrų?
Kitą:Kablelių atskyrimo eilutės metodas
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com