Entity Framework (EF) Core je lehká, rozšiřitelná, open-source a multiplatformní verze populární technologie přístupu k datům Entity Framework.
EF Core lze použít jako objektově relační mapovač (O/RM), takže vývojáři .NET mohou pracovat s databázemi s .NET objekty, takže nemusí často psát většinu kódu pro přístup k datům.
Poskytovatel databáze:Přihlášení k hypertextovému odkazu je viditelné.
Prostředí použité v tomto článku:
- Otevřené nástroje: VS 2017
- Dotnet verze: 2.1.301
- Databáze: SQL Sever 2012
Vytvořte projekt
1: BaiDuPan.WebUI je ASP.NET pro vytvoření základní webové aplikace;
2: BaiDuPan.DomainModel slouží k vytvoření knihovny tříd (.NET Core);
Přidat referenci na jádro Entity Framework
Vyvinuto ve vs2017. Projekt NET Framework, při přidání ef 6 jej můžete přidat přímo kliknutím pravým tlačítkem na projekt, jak je vidět na obrázku níže:
EF jádra však nelze přidávat výše uvedeným způsobem.
PM příkaz:
Podle výše uvedeného pořadí,Program automaticky přidává požadované balíčky závislostíTakže není potřeba přidávat balíček Microsoft.EntityFrameworkCore.
Přidejte modely kontextu a entit
Filmové modely:
Kontext databáze PanDb:
Startup class, který přidává injekci závislosti na databázi (Zde je potřeba přidat odkaz na DomainModel do WebUI):
Výše uvedený kód vyžaduje, aby projekt odkazoval na Microsoft.EntityFrameworkCore.SqlServer, ale BaiDuPan.WebUI nemusí odkazovat na Microsoft.EntityFrameworkCore.SqlServer, proč není hlášen jako chyba?
Microsoft.AspNetCore.App balíček obsahuje všechny funkce ASP.NET Core 2.1 a novějších a Entity Framework Core 2.1 a novějších. Výchozí šablony projektů pro ASP.NET Core 2.1 a novějších používají tento balíček. Microsoft.AspNetCore.App balíčky jsou doporučovány pro aplikace s ASP.NET Core 2.1 a novějšími a Entity Framework Core 2.1 a novějšími.
appsettings.json Konfigurujte řetězec spojení databáze:
Zkuste začít projekt s následující chybou:
Chyba NU1107 detekuje konflikt verzí v Microsoft.EntityFrameworkCore. Odkazování na balíček přímo z projektu tento problém řeší. 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ůvodem je, že mezi těmito dvěma projekty je konflikt verzí, zkuste nainstalovat vyšší verzi ef core do BaiDuPan.WebUI, nová chyba je následující:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 DOSTAThttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Vrácení balíčku 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 已解决。 Install-Package: NU1107: Zjištěn konflikt verzí v Microsoft.EntityFrameworkCore. Odkazování na balíček přímo z projektu tento problém řeší. 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). Řádek lokace: 1 znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Obnovení balíčku selhalo. Vrácení zpět změn balíčků pro "BaiDuPan.WebUI". Řádek lokace: 1 znak: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecificed: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Čas před letem: 00:00:01.4208784 PM>
Co dělat? Řešení je následující:
Downgrade, projekt BaiDuPan.WebUI odkazuje na Microsoft.EntityFrameworkCore 2.1.1, takže příkaz nuget znovu spustíme v projektu BaiDuPan.DomainModel následovně:
Tímto způsobem garantujeme, že všechny projekty mají stejnou verzi EF Core.
Inicializace databáze
Databáze a tabulka jsou úspěšně vytvořeny, jak je znázorněno na následujícím obrázku:
Přidejte ovladač MovieController
Kód je následující:
Metoda Index spočívá v dotazování všech dat v databázové tabulce Movie a metoda Create slouží k přidání nových dat, zkusme přidat kus dat a požádat ho pošťákem, jak je ukázáno na obrázku níže:
Přihlášení k hypertextovému odkazu je viditelné.Žádost o POST
Program byl schopen provádět hladce, nebyly vyhozeny žádné výjimky, což dokazuje, že vložení bylo úspěšné, a pokus o přístup:Přihlášení k hypertextovému odkazu je viditelné.Dotazujte se na všechna data, jak je znázorněno na obrázku níže:
Co se týče úprav a mazání, to je samozřejmé!
Prostředky:
Jádro entity Framework:Přihlášení k hypertextovému odkazu je viditelné.
ASP.NET Jádro:Přihlášení k hypertextovému odkazu je viditelné.
(Konec)
|