Entity Framework (EF) Core is een lichtgewicht, uitbreidbare, open-source en cross-platform versie van de populaire Entity Framework data-toegangstechnologie.
EF Core kan worden gebruikt als een object-relationele mapper (O/RM), zodat .NET-ontwikkelaars met databases met .NET-objecten kunnen werken, zodat ze niet vaak het grootste deel van de data-toegangscode hoeven te schrijven.
Databaseprovider:De hyperlink-login is zichtbaar.
De omgeving die in dit artikel wordt gebruikt:
- Open Tools: VS 2017
- DotNet versie: 2.1.301
- Database: SQL Sever 2012
Maak een project aan
1: BaiDuPan.WebUI is een ASP.NET om een Core webapplicatie te maken;
2: BaiDuPan.DomainModel is bedoeld om een klassebibliotheek te creëren (.NET Core);
Voeg een Entity Framework Core-referentie toe
Ontwikkeld met vs2017. NET Framework-project, bij het toevoegen van ef 6 kun je het direct toevoegen door met de rechtermuisknop op het project te klikken, zoals te zien is in de onderstaande figuur:
EF-kernen kunnen echter niet op bovenstaande manier worden toegevoegd.
PM-commando:
Volgens bovenstaande volgorde,Het programma voegt automatisch de benodigde afhankelijkheidspakketten toeDus het is niet nodig om het Microsoft.EntityFrameworkCore-pakket toe te voegen.
Voeg context- en entiteitsmodellen toe
Filmmodellen:
PanDb-databasecontext:
Startup-klasse, die databasecontextafhankelijkheidsinjectie toevoegt (Hier moet je een DomainModel-referentie toevoegen aan de WebUI):
De bovenstaande code vereist dat het project naar Microsoft.EntityFrameworkCore.SqlServer verwijst, maar BaiDuPan.WebUI hoeft Microsoft.EntityFrameworkCore.SqlServer niet te verwijzen, waarom wordt er dan geen foutmelding gemeld?
Microsoft.AspNetCore.App pakket bevat alle functies van ASP.NET Core 2.1 en later en Entity Framework Core 2.1 en later. Standaard projectsjablonen voor ASP.NET Core 2.1 en later gebruiken dit pakket. Microsoft.AspNetCore.App pakketten worden aanbevolen voor applicaties met ASP.NET Core 2.1 en later en Entity Framework Core 2.1 en later.
appsettings.json Configureer de databaseverbindingsstring:
Probeer het project te starten met de volgende fout:
Fout NU1107 detecteert een versieconflict in Microsoft.EntityFrameworkCore. Het direct verwijzen naar het pakket vanuit het project lost dit probleem op. 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 De reden is dat er een versieconflict is tussen de twee projecten; probeer een hogere versie van ef core te installeren in BaiDuPan.WebUI, de nieuwe fout is als volgt:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Versie 2.2.4 TOEVOEGENhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Het pakket van 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 已解决。 Installatiepakket: NU1107: Versieconflict gedetecteerd in Microsoft.EntityFrameworkCore. Het direct verwijzen naar het pakket vanuit het project lost dit probleem op. 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). Locatielijn: 1 Tekens: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategorieInfo : NietGespecificeerd: (:) [Install-Package], Uitzondering + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Pakketherstel mislukte. Pakketwijzigingen terugdraaien voor "BaiDuPan.WebUI". Locatielijn: 1 Tekens: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategorieInfo : NietGespecificeerd: (:) [Install-Package], Uitzondering + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Tijd geaart: 00:00:01.4208784 PM>
Wat te doen? De oplossing is als volgt:
Downgrade, het BaiDuPan.WebUI-project verwijst naar Microsoft.EntityFrameworkCore 2.1.1, dus voeren we het nuget-commando opnieuw uit in het BaiDuPan.DomainModel-project, als volgt:
Op deze manier garanderen we dat alle projecten dezelfde EF Core-versie hebben.
Initialiseer de database
De database en tabel zijn succesvol aangemaakt zoals te zien is in de volgende afbeelding:
Voeg de MovieController-controller toe
De code is als volgt:
De Index-methode is om alle gegevens in de database Movie-tabel op te vragen, en de Create-methode is om nieuwe data toe te voegen; laten we proberen een stuk data toe te voegen en dit aan postbode op te vragen, zoals te zien is in de onderstaande figuur:
De hyperlink-login is zichtbaar.POST-verzoek
Het programma kon soepel uitvoeren, er werden geen uitzonderingen gegooid, wat bewees dat de insertie succesvol was, en de toegang werd geprobeerd:De hyperlink-login is zichtbaar.Zoek alle gegevens op zoals weergegeven in de onderstaande figuur:
Wat betreft aanpassingen en verwijderingen, spreekt het voor zich!
Weg:
Kern van het Entity Framework:De hyperlink-login is zichtbaar.
ASP.NET Kern:De hyperlink-login is zichtbaar.
(Einde)
|