Entity Framework (EF) Core je ľahká, rozšíriteľná, open-source a multiplatformová verzia populárnej technológie prístupu k dátam Entity Framework.
EF Core môže byť použitý ako objektovo-relačný mapper (O/RM), aby vývojári .NET mohli pracovať s databázami s .NET objektmi, aby nemuseli často písať väčšinu kódu na prístup k dátam.
Poskytovateľ databázy:Prihlásenie na hypertextový odkaz je viditeľné.
Prostredie použité v tomto článku:
- Otvorené nástroje: VS 2017
- Dotnet verzia: 2.1.301
- Databáza: SQL Sever 2012
Vytvorte projekt
1: BaiDuPan.WebUI je ASP.NET na vytvorenie jadrovej webovej aplikácie;
2: BaiDuPan.DomainModel je na vytvorenie knižnice tried (.NET Core);
Pridajte referenciu na jadro Entity Framework
Vyvinuté s vs2017. Projekt NET Framework, pri pridávaní ef 6 ho môžete pridať priamo kliknutím pravým tlačidlom na projekt, ako je znázornené na obrázku nižšie:
EF jadrá však nie je možné pridať vyššie uvedeným spôsobom.
PM príkaz:
Podľa vyššie uvedeného poradia,Program automaticky pridáva potrebné balíčky závislostíTakže nie je potrebné pridávať balík Microsoft.EntityFrameworkCore.
Pridajte modely kontextu a entít
Filmové modely:
Kontext databázy PanDb:
Trieda Startup, ktorá pridáva injekciu závislosti na databáze (Tu je potrebné pridať referenciu na DomainModel do WebUI):
Vyššie uvedený kód vyžaduje, aby projekt odkazoval na Microsoft.EntityFrameworkCore.SqlServer, ale BaiDuPan.WebUI nemusí odkazovať na Microsoft.EntityFrameworkCore.SqlServer, prečo teda nie je hlásený ako chyba?
Microsoft.AspNetCore.App balík obsahuje všetky funkcie ASP.NET Core 2.1 a novších, ako aj Entity Framework Core 2.1 a novšie. Predvolené šablóny projektov pre ASP.NET Core 2.1 a novšie používajú tento balík. Microsoft.AspNetCore.App balíky sa odporúčajú pre aplikácie s ASP.NET Core 2.1 a novšími a Entity Framework Core 2.1 a novšími.
appsettings.json Konfigurácia reťazca spojenia databázy:
Skúste začať projekt s nasledujúcou chybou:
Chyba NU1107 detekuje konflikt verzií v Microsoft.EntityFrameworkCore. Priame odkazovanie na balík z projektu tento problém rieši. 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 Dôvodom je, že medzi týmito dvoma projektmi je konflikt verzií, skúste nainštalovať vyššiu verziu ef core do BaiDuPan. WebUI, nová chyba je nasledovná:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 DOSTAŤhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Vrátenie balíka C:\Users\itsvse_pc\Source\Repos\baidupan\BaiDuPan.WebUI\BaiDuPan.WebUI.csproj...
NU1608: 检测到的包版本在依赖项约束之外: Microsoft.AspNetCore.App 2.1.1 需要 Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0),但版本 Microsoft.EntityFrameworkCore.SqlServer 2.2.4 已解决。 Inštalačný balík: NU1107: Zistený konflikt verzií v Microsoft.EntityFrameworkCore. Priame odkazovanie na balík z projektu tento problém rieši. 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). Linka miesta: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], výnimka + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Inštalačný balík: Obnovenie balíka zlyhalo. Vrátenie späť zmien balíkov pre "BaiDuPan.WebUI". Linka miesta: 1 Znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], výnimka + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Čas do začiatku: 00:00:01.4208784 PM>
Čo robiť? Riešenie je nasledovné:
Downgrade, projekt BaiDuPan.WebUI odkazuje na Microsoft.EntityFrameworkCore 2.1.1, takže v projekte BaiDuPan.DomainModel znovu spustíme príkaz nuget, nasledovne:
Týmto spôsobom zaručujeme, že všetky projekty majú rovnakú verziu EF Core.
Inicializujte databázu
Databáza a tabuľka sú úspešne vytvorené, ako je znázornené na nasledujúcom obrázku:
Pridajte ovládač MovieController
Kód je nasledovný:
Metóda Index spočíva v dotazovaní všetkých dát v databázovej tabuľke Movie a metóda Create je na pridávanie nových dát, skúsme pridať kus dát a požiadať ho poštárom, ako je znázornené na obrázku nižšie:
Prihlásenie na hypertextový odkaz je viditeľné.POST žiadosť
Program sa podarilo vykonať plynulo, neboli vyhodené žiadne výnimky, čo dokázalo úspešné vloženie a pokus o prístup:Prihlásenie na hypertextový odkaz je viditeľné.Dotazujte všetky údaje, ako je znázornené na obrázku nižšie:
Čo sa týka úprav a vymazaní, je to samozrejmé!
Zdroje:
Entity Framework Core:Prihlásenie na hypertextový odkaz je viditeľné.
ASP.NET Jadro:Prihlásenie na hypertextový odkaz je viditeľné.
(Koniec)
|