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.