Entity Framework (EF) Core ist eine leichte, erweiterbare, quelllose und plattformübergreifende Version der beliebten Datenzugriffstechnologie Entity Framework.
EF Core kann als objektrelationeller Mapper (O/RM) verwendet werden, damit .NET-Entwickler mit Datenbanken mit .NET-Objekten arbeiten können, sodass sie nicht häufig den Großteil des Datenzugriffscodes schreiben müssen.
Datenbankanbieter:Der Hyperlink-Login ist sichtbar.
Die in diesem Artikel verwendete Umgebung:
- Open Tools: VS 2017
- dotnet-Version: 2.1.301
- Datenbank: SQL Sever 2012
Erstelle ein Projekt
1: BaiDuPan.WebUI ist eine ASP.NET zur Erstellung einer Core-Webanwendung;
2: BaiDuPan.DomainModel dient dazu, eine Klassenbibliothek (.NET Core) zu erstellen;
Fügen Sie eine Entity Framework Core-Referenz hinzu
Entwickelt mit vs2017. NET Framework-Projekt, wenn Sie EF 6 hinzufügen, können Sie es direkt hinzufügen, indem Sie mit Rechtsklick auf das Projekt klicken, wie in der Abbildung unten gezeigt:
EF-Kerne können jedoch nicht auf die oben genannte Weise hinzugefügt werden.
PM-Kommando:
Nach der obigen Reihenfolge giltDas Programm fügt automatisch die erforderlichen Abhängigkeitspakete hinzuEs ist also nicht nötig, das Microsoft.EntityFrameworkCore-Paket hinzuzufügen.
Kontext- und Entitätsmodelle hinzufügen
Filmmodelle:
Kontext der PanDb-Datenbank:
Startklasse, die Datenbankkontext-Abhängigkeitsinjektion (Hier müssen Sie eine DomainModel-Referenz zum WebUI hinzufügen):
Der obige Code verlangt, dass das Projekt auf Microsoft.EntityFrameworkCore.SqlServer referenziert, aber BaiDuPan.WebUI muss Microsoft.EntityFrameworkCore.SqlServer nicht referenzieren – warum wird kein Fehler gemeldet?
Microsoft.AspNetCore.App Paket enthält alle Funktionen von ASP.NET Core 2.1 und später sowie Entity Framework Core 2.1 und neuer. Standard-Projektvorlagen für ASP.NET Core 2.1 und später verwenden dieses Paket. Microsoft.AspNetCore.App Pakete werden für Anwendungen mit ASP.NET Core 2.1 und später sowie Entity Framework Core 2.1 und später empfohlen.
appsettings.json Konfigurieren Sie die Datenbank-Verbindungszeichenkette:
Versuchen Sie, das Projekt mit folgendem Fehler zu starten:
Fehler NU1107 erkennt einen Versionskonflikt in Microsoft.EntityFrameworkCore. Das direkte Referenzen des Pakets aus dem Projekt löst dieses 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 Der Grund ist, dass es einen Versionskonflikt zwischen den beiden Projekten gibt, versuchen Sie, eine höhere Version von ef core in BaiDuPan.WebUI zu installieren, der neue Fehler lautet wie folgt:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4 ERHALTENhttps://api.nuget.org/v3/registr ... qlserver/index.json CACHEhttps://api.nuget.org/v3/registr ... qlserver/index.json Zurücksetzung des Pakets von 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 in Microsoft.EntityFrameworkCore erkannt. Das direkte Referenzen des Pakets aus dem Projekt löst dieses 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). Standortzeile: 1 Zeichen: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategorieInfo: NichtSpezifiziert: (:) [Install-Package], Ausnahme + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Install-Package: Paketwiederherstellung fehlgeschlagen. Paketänderungen für "BaiDuPan.WebUI" rückgängig machen. Standortzeile: 1 Zeichen: 1 + Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + KategorieInfo: NichtSpezifiziert: (:) [Install-Package], Ausnahme + FullQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Ap: 00:00:01.4208784 PM>
Was ist zu tun? Die Lösung lautet wie folgt:
Downgrade, das BaiDuPan.WebUI-Projekt verweist auf Microsoft.EntityFrameworkCore 2.1.1, daher führen wir den Nuget-Befehl im BaiDuPan.DomainModel-Projekt wie folgt erneut aus:
So garantieren wir, dass alle Projekte dieselbe EF Core-Version haben.
Datenbank initialisieren
Die Datenbank und die Tabelle wurden erfolgreich erstellt, wie im folgenden Bild gezeigt:
Fügen Sie den MovieController-Controller hinzu
Der Code lautet wie folgt:
Die Index-Methode besteht darin, alle Daten in der Datenbank-Movie-Tabelle abzufragen, und die Create-Methode besteht darin, neue Daten hinzuzufügen; versuchen wir, ein Datenstück hinzuzufügen und es mit dem Postboten anzufordern, wie in der untenstehenden Abbildung gezeigt:
Der Hyperlink-Login ist sichtbar.POST-Anfrage
Das Programm konnte reibungslos ausgeführt werden, es wurden keine Ausnahmen ausgelöst, was bewies, dass die Einfügung erfolgreich war, und der Zugriff wurde versucht:Der Hyperlink-Login ist sichtbar.Abfragen Sie alle Daten wie in der untenstehenden Abbildung dargestellt:
Was Modifikationen und Löschungen angeht, versteht sich das von selbst!
Betriebsmittel:
Kern des Entitätenrahmens:Der Hyperlink-Login ist sichtbar.
ASP.NET Kern:Der Hyperlink-Login ist sichtbar.
(Ende)
|