Portieren eines EDMX-basierten EF6-Modells auf EF CorePorting an EF6 EDMX-Based Model to EF Core

EF Core unterstützt das EDMX-Dateiformat nicht für Modelle.EF Core does not support the EDMX file format for models. Der beste Ansatz zum Portieren dieser Modelle besteht darin, ein neues codebasiertes Modell aus der Datenbank für Ihre Anwendung zu generieren.The best option to port these models, is to generate a new code-based model from the database for your application.

Installieren von EF Core-NuGet-PaketenInstall EF Core NuGet packages

Installieren Sie das NuGet-Paket Microsoft.EntityFrameworkCore.Tools.Install the Microsoft.EntityFrameworkCore.Tools NuGet package.

Erneutes Generieren des ModellsRegenerate the model

Sie können jetzt die Reverse-Engineering-Funktion verwenden, um ein Modell auf Grundlage der vorhandenen Datenbank zu erstellen.You can now use the reverse engineer functionality to create a model based on your existing database.

Führen Sie in der Paket-Manager-Konsole (Extras > NuGet-Paket-Manager > Paket-Manager-Konsole) den folgenden Befehl aus.Run the following command in Package Manager Console (Tools –> NuGet Package Manager –> Package Manager Console). 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.See Package Manager Console (Visual Studio) for command options to scaffold a subset of tables etc.

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.For example, here is the command to scaffold a model from the Blogging database on your SQL Server LocalDB instance.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

Entfernen des EF6-ModellsRemove EF6 model

An dieser Stelle entfernen Sie das EF6-Modell aus der Anwendung.You would now remove the EF6 model from your application.

Sie müssen das EF6-NuGet-Paket (EntityFramework) nicht deinstallieren, da EF Core und EF6 parallel in derselben Anwendung verwendet werden können.It is fine to leave the EF6 NuGet package (EntityFramework) installed, as EF Core and EF6 can be used side-by-side in the same application. Wenn Sie jedoch nicht beabsichtigen, EF6 in Ihrer Anwendung zu verwenden, kann das Deinstallieren des Pakets dazu beitragen, dass nur zu den Codebestandteilen Kompilierfehler ausgegeben werden, die wirklich Ihre Aufmerksamkeit erfordern.However, if you aren't intending to use EF6 in any areas of your application, then uninstalling the package will help give compile errors on pieces of code that need attention.

Aktualisieren Ihres CodesUpdate your code

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.At this point, it's a matter of addressing compilation errors and reviewing code to see if the behavior changes between EF6 and EF Core will impact you.

Testen des PortsTest the port

Nur weil Ihre Anwendung erfolgreich kompiliert wird, bedeutet das nicht, dass sie auch erfolgreich auf EF Core portiert wurde.Just because your application compiles, does not mean it is successfully ported to EF Core. Sie müssen alle Bereiche Ihrer Anwendung testen, um sicherzustellen, dass keine der Verhaltensänderungen Ihre Anwendung beeinträchtigt hat.You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.