"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)
|