Entity Framework (EF) Core är en lättviktig, utbyggbar, öppen källkod och plattformsoberoende version av den populära dataåtkomstteknologin Entity Framework.
EF Core kan användas som en objektrelationell mappare (O/RM) så att .NET-utvecklare kan arbeta med databaser med .NET-objekt så att de inte behöver skriva större delen av dataåtkomstkoden ofta.
Databasleverantör:Inloggningen med hyperlänken är synlig.
Miljön som används i denna artikel:
- Öppna verktyg: VS 2017
- dotnet-version: 2.1.301
- Databas: SQL Sever 2012
Skapa ett projekt
1: BaiDuPan.WebUI är ett ASP.NET för att skapa en kärnwebbapplikation;
2: BaiDuPan.DomainModel är för att skapa ett klassbibliotek (.NET Core);
Lägg till en Entity Framework Core-referens
Utvecklad med vs2017. NET Framework-projektet, när du lägger till ef 6 kan du lägga till det direkt genom att högerklicka på projektet, som visas i figuren nedan:
EF-kärnor kan dock inte läggas till på ovanstående sätt.
PM-kommando:
Enligt ovanstående ordning,Programmet lägger automatiskt till de nödvändiga beroendepaketenSå det finns inget behov av att lägga till paketet Microsoft.EntityFrameworkCore.
Lägg till kontext- och entitetsmodeller
Filmmodeller:
PanDb-databasens kontext:
Startklass, som lägger till databaskontextberoendeinjektion (Här behöver du lägga till en DomainModel-referens i WebUI):
Ovanstående kod kräver att projektet refererar till Microsoft.EntityFrameworkCore.SqlServer, men BaiDuPan.WebUI behöver inte referera till Microsoft.EntityFrameworkCore.SqlServer, varför rapporteras det inte ett fel?
Microsoft.AspNetCore.App paket innehåller alla funktioner från ASP.NET Core 2.1 och senare samt Entity Framework Core 2.1 och senare. Standardprojektmallar för ASP.NET Core 2.1 och senare använder detta paket. Microsoft.AspNetCore.App paket rekommenderas för applikationer med ASP.NET Core 2.1 och senare samt Entity Framework Core 2.1 och senare.
appsettings.json Konfigurera databasanslutningssträngen:
Försök starta projektet med följande fel:
Fel NU1107 upptäcker en versionskonflikt i Microsoft.EntityFrameworkCore. Att referera till paketet direkt från projektet löser detta 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 Anledningen är att det finns en versionskonflikt mellan de två projekten, försök installera en högre version av ef core i BaiDuPan.WebUI, det nya felet är följande:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 GÅhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Återställer paketet 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 已解决。 Installationspaket: NU1107: Versionskonflikt upptäckt i Microsoft.EntityFrameworkCore. Att referera till paketet direkt från projektet löser detta 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). Platsrad: 1 tecken: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : Ej specificerad: (:) [Installera-paket], undantag + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Installera-Paket: Paketåterställning misslyckades. Rullar tillbaka paketändringar för "BaiDuPan.WebUI". Platsrad: 1 tecken: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategoriInfo : Ej specificerad: (:) [Installera-paket], undantag + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Tid Ap: 00:00:01.4208784 PM>
Vad ska man göra? Lösningen är följande:
Nedgradering, BaiDuPan.WebUI-projektet refererar till Microsoft.EntityFrameworkCore 2.1.1, så vi kör nuget-kommandot igen i BaiDuPan.DomainModel-projektet, enligt följande:
På så sätt garanterar vi att alla projekt har samma EF Core-version.
Initiera databasen
Databasen och tabellen skapas framgångsrikt som visas i följande bild:
Lägg till MovieController-kontrollern
Koden är följande:
Indexmetoden är att fråga all data i databasens filmtabell, och Create-metoden är att lägga till ny data, låt oss försöka lägga till en databit och begära den med postbudet, som visas i figuren nedan:
Inloggningen med hyperlänken är synlig.POST-förfrågan
Programmet kunde köras smidigt, inga undantag kastades, vilket bevisade att insättningen lyckades, och åtkomsten försöktes:Inloggningen med hyperlänken är synlig.Sök i all data som visas i figuren nedan:
När det gäller modifieringar och borttagningar är det självklart!
Resurser:
Kärna i Entity Framework:Inloggningen med hyperlänken är synlig.
ASP.NET Kärna:Inloggningen med hyperlänken är synlig.
(Slut)
|