Portieren eines EDMX-basierten EF6-Modells auf EF Core
EF Core unterstützt das EDMX-Dateiformat nicht für Modelle. Der beste Ansatz zum Portieren dieser Modelle besteht darin, ein neues codebasiertes Modell aus der Datenbank für Ihre Anwendung zu generieren.
Installieren von EF Core-NuGet-Paketen
Installieren Sie das Microsoft.EntityFrameworkCore.Tools
NuGet-Paket.
Erneutes Generieren des Modells
Sie können jetzt die Reverse-Engineering-Funktion verwenden, um ein Modell auf Grundlage der vorhandenen Datenbank zu erstellen.
Führen Sie in der Paket-Manager-Konsole (Extras > NuGet-Paket-Manager > Paket-Manager-Konsole) den folgenden Befehl aus. Im Artikel zur Paket-Manager-Konsole in Visual Studio finden Sie Befehlsoptionen für das Erstellen eines Gerüsts für eine Teilmenge von Tabellen oder anderen Komponenten.
Scaffold-DbContext "<connection string>" <database provider name>
Hier sehen Sie z. B. den Befehl, um das Gerüst eines Modell aus der Blogging-Datenbank auf Ihrer SQL Server-LocalDB-Instanz zu erstellen.
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
Entfernen des EF6-Modells
An dieser Stelle entfernen Sie das EF6-Modell aus der Anwendung.
Sie müssen das EF6-NuGet-Paket (EntityFramework) nicht deinstallieren, da EF Core und EF6 parallel in derselben Anwendung verwendet werden können. Wenn Sie jedoch nicht beabsichtigen, EF6 in Ihrer Anwendung zu verwenden, kann das Deinstallieren des Pakets dazu beitragen, dass nur zu den Codebestandteilen Compilerfehler ausgegeben werden, die wirklich Ihre Aufmerksamkeit erfordern.
Aktualisieren Ihres Codes
An dieser Stelle ist es wichtig, Kompilierfehler zu beheben und ein Code Review durchzuführen, um festzustellen, ob die Verhaltensänderungen zwischen EF6 und EF Core eine Auswirkung zeigen.
Testen des Ports
Nur weil Ihre Anwendung erfolgreich kompiliert wird, bedeutet das nicht, dass sie auch erfolgreich auf EF Core portiert wurde. Sie müssen alle Bereiche Ihrer Anwendung testen, um sicherzustellen, dass keine der Verhaltensänderungen Ihre Anwendung beeinträchtigt hat.
Andere Aspekte
EF Core unterstützt den Anbieter EntityClient
nicht. Deshalb müssen sämtliche EntitySQL-Abfragen zu LINQ oder FromRawSql
migriert werden.
Darüber hinaus werden EntityClient-Verbindungszeichenfolgen nicht unterstützt.
Weitere wichtige Hinweise finden Sie im vollständigen Leitfaden zu den Unterschieden zwischen EF6 und EF Core.