Entity Framework (EF) Core er en letvægts, udvidelsesbar, open source og cross-platform version af den populære Entity Framework dataadgangsteknologi.
EF Core kan bruges som en objekt-relationel mapper (O/RM), så .NET-udviklere kan arbejde med databaser med .NET-objekter, så de ikke behøver at skrive det meste af dataadgangskoden ofte.
Databaseudbyder:Hyperlink-login er synlig.
Miljøet, der bruges i denne artikel:
- Åbne værktøjer: VS 2017
- dotnet-version: 2.1.301
- Database: SQL Sever 2012
Opret et projekt
1: BaiDuPan.WebUI er en ASP.NET til at skabe en Core webapplikation;
2: BaiDuPan.DomainModel er til at oprette et klassebibliotek (.NET Core);
Tilføj en Entity Framework Core-reference
Udviklet med vs2017. NET Framework-projektet, når du tilføjer ef 6, kan du direkte tilføje det ved at højreklikke på projektet, som vist i figuren nedenfor:
EF-kerner kan dog ikke tilføjes på ovenstående måde.
PM-kommando:
Efter ovenstående rækkefølge,Programmet tilføjer automatisk de nødvendige afhængighedspakkerSå der er ikke behov for at tilføje Microsoft.EntityFrameworkCore-pakken.
Tilføj kontekst og entitetsmodeller
Filmmodeller:
PanDb-databasekontekst:
Startklasse, som tilføjer databasekontekstafhængighedsinjektion (Her skal du tilføje en DomainModel-reference til WebUI'en):
Ovenstående kode kræver, at projektet refererer til Microsoft.EntityFrameworkCore.SqlServer, men BaiDuPan.WebUI behøver ikke at referere til Microsoft.EntityFrameworkCore.SqlServer, hvorfor rapporteres der så ikke en fejl?
Microsoft.AspNetCore.App pakke indeholder alle funktionerne fra ASP.NET Core 2.1 og senere samt Entity Framework Core 2.1 og nyere. Standard projektskabeloner til ASP.NET Core 2.1 og senere bruger denne pakke. Microsoft.AspNetCore.App pakker anbefales til applikationer med ASP.NET Core 2.1 og senere samt Entity Framework Core 2.1 og senere.
appsettings.json Konfigurér databaseforbindelsesstrengen:
Prøv at starte projektet med følgende fejl:
Fejl NU1107 opdager en versionskonflikt i Microsoft.EntityFrameworkCore. At referere til pakken direkte fra projektet løser dette 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 Årsagen er, at der er en versionskonflikt mellem de to projekter, prøv at installere en højere version af ef core i BaiDuPan.WebUI, den nye fejl er som følger:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 FÅhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Tilbageføring af pakken 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 已解决。 Installationspakke: NU1107: Versionskonflikt opdaget i Microsoft.EntityFrameworkCore. At referere til pakken direkte fra projektet løser dette 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). Lokationslinje: 1 Tegn: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : IkkeSpecificeret: (:) [Install-Package], Undtagelse + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Pakkegendannelse mislykkedes. Tilbagerulning af pakkeændringer for "BaiDuPan.WebUI". Lokationslinje: 1 Tegn: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : IkkeSpecificeret: (:) [Install-Package], Undtagelse + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Apred: 00:00:01.4208784 PM>
Hvad skal jeg gøre? Løsningen er som følger:
Nedgradering, BaiDuPan.WebUI-projektet refererer til Microsoft.EntityFrameworkCore 2.1.1, så vi genudfører nuget-kommandoen i BaiDuPan.DomainModel-projektet som følger:
På den måde garanterer vi, at alle projekter har den samme EF Core-version.
Initialiser databasen
Databasen og tabellen oprettes med succes som vist i følgende billede:
Tilføj MovieController-controlleren
Koden er som følger:
Index-metoden er at forespørge alle data i databasens Movie-tabel, og Create-metoden er at tilføje nye data, lad os prøve at tilføje et datastykke og anmode om det hos postbuddet, som vist i figuren nedenfor:
Hyperlink-login er synlig.POST-anmodning
Programmet kunne køre problemfrit, ingen undtagelser blev kastet, hvilket beviste, at indsættelsen var vellykket, og adgangen blev forsøgt:Hyperlink-login er synlig.Forespørg alle data som vist i figuren nedenfor:
Hvad angår ændringer og sletninger, siger det sig selv!
Ressourcer:
Entity Framework Core:Hyperlink-login er synlig.
ASP.NET Kerne:Hyperlink-login er synlig.
(Slut)
|