Entity Framework (EF) Core er en lettvekts, utvidbar, åpen kildekode og plattformuavhengig versjon av den populære datatilgangsteknologien Entity Framework.
EF Core kan brukes som en objekt-relasjonell mapper (O/RM) slik at .NET-utviklere kan jobbe med databaser med .NET-objekter, slik at de slipper å skrive mesteparten av datakoden ofte.
Databaseleverandør:Innloggingen med hyperkoblingen er synlig.
Miljøet som brukes i denne artikkelen:
- Åpne verktøy: VS 2017
- dotnet-versjon: 2.1.301
- Database: SQL Sever 2012
Lag et prosjekt
1: BaiDuPan.WebUI er en ASP.NET for å lage en kjerne-webapplikasjon;
2: BaiDuPan.DomainModel er for å opprette et klassebibliotek (.NET Core);
Legg til en Entity Framework Core-referanse
Utviklet med vs2017. NET Framework-prosjektet, når du legger til ef 6, kan du legge det til direkte ved å høyreklikke på prosjektet, som vist i figuren nedenfor:
EF-kjerner kan imidlertid ikke legges til på den ovennevnte måten.
PM-kommando:
Etter ovennevnte rekkefølge,Programmet legger automatisk til de nødvendige avhengighetspakkeneSå det er ikke nødvendig å legge til Microsoft.EntityFrameworkCore-pakken.
Legg til kontekst- og entitetsmodeller
Filmmodeller:
Kontekst for PanDb-databasen:
Oppstartsklasse, som legger til databasekontekstavhengighetsinjeksjon (Her må du legge til en DomainModel-referanse i WebUI):
Koden ovenfor krever at prosjektet refererer til Microsoft.EntityFrameworkCore.SqlServer, men BaiDuPan.WebUI trenger ikke å referere til Microsoft.EntityFrameworkCore.SqlServer, hvorfor rapporteres det ikke en feil?
Microsoft.AspNetCore.App pakken inkluderer alle funksjonene fra ASP.NET Core 2.1 og nyere samt Entity Framework Core 2.1 og nyere. Standard prosjektmaler for ASP.NET Core 2.1 og senere bruker denne pakken. Microsoft.AspNetCore.App pakker anbefales for applikasjoner med ASP.NET Core 2.1 og nyere samt Entity Framework Core 2.1 og nyere.
appsettings.json Konfigurer databaseforbindelsesstrengen:
Prøv å starte prosjektet med følgende feil:
Feil NU1107 oppdager en versjonskonflikt i Microsoft.EntityFrameworkCore. Å referere til pakken direkte fra prosjektet løser dette problemet. 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 Årsaken er at det er en versjonskonflikt mellom de to prosjektene, prøv å installere en høyere versjon av ef core i BaiDuPan.WebUI, den nye feilen er som følger:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -versjon 2.2.4 FÅ TAKhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Tilbakestiller pakken til 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 已解决。 Installasjonspakke: NU1107: Versjonskonflikt oppdaget i Microsoft.EntityFrameworkCore. Å referere til pakken direkte fra prosjektet løser dette problemet. 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). Lokasjonslinje: 1 Tegn: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -versjon 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : IkkeSpesifisert: (:) [Installer-Pakke], Unntak + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Pakkegjenoppretting mislyktes. Ruller tilbake pakkeendringer for "BaiDuPan.WebUI". Lokasjonslinje: 1 Tegn: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -versjon 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : IkkeSpesifisert: (:) [Installer-Pakke], Unntak + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Ap: 00:00:01.4208784 PM>
Hva skal jeg gjøre? Løsningen er som følger:
Nedgradering, BaiDuPan.WebUI-prosjektet refererer til Microsoft.EntityFrameworkCore 2.1.1, så vi kjører nuget-kommandoen på nytt i BaiDuPan.DomainModel-prosjektet, som følger:
På denne måten garanterer vi at alle prosjekter har samme EF Core-versjon.
Initialiser databasen
Databasen og tabellen opprettes vellykket som vist i følgende bilde:
Legg til MovieController-kontrolleren
Koden er som følger:
Indeksmetoden er å spørre alle dataene i databasens filmtabell, og Create-metoden er å legge til nye data, la oss prøve å legge til et datastykke og be om det hos postmannen, som vist i figuren under:
Innloggingen med hyperkoblingen er synlig.POST-forespørsel
Programmet kunne kjøre smidig, ingen unntak ble kastet, noe som beviste at innsettingen var vellykket, og tilgangen ble forsøkt:Innloggingen med hyperkoblingen er synlig.Søk i alle data som vist i figuren nedenfor:
Når det gjelder modifikasjoner og slettinger, sier det seg selv!
Ressurser:
Kjerne i Entity Framework:Innloggingen med hyperkoblingen er synlig.
ASP.NET Kjerne:Innloggingen med hyperkoblingen er synlig.
(Slutt)
|