Portieren eines EDMX-Datei-basierten Modells mit EF6 zu EF CorePorting an EF6 EDMX-Based Model to EF Core

EF Core unterstützt nicht das EDMX-Dateiformat für Modelle.EF Core does not support the EDMX file format for models. So portieren Sie diese Modelle, die beste Option ist ein neues, codebasierte 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 die Microsoft.EntityFrameworkCore.Tools NuGet-Paket.Install the Microsoft.EntityFrameworkCore.Tools NuGet package.

Das Modell erneut generierenRegenerate the model

Sie können jetzt die reverse Engineering-Funktionen verwenden, zum Erstellen eines Modells, basierend auf Ihrer vorhandenen Datenbank.You can now use the reverse engineer functionality to create a model based on your existing database.

Führen den folgenden Befehl in der Paket-Manager-Konsole (Tools Memberauswahloperator NuGet-Paket-Manager-Paket-Manager-Konsole Memberauswahloperator).Run the following command in Package Manager Console (Tools –> NuGet Package Manager –> Package Manager Console). Finden Sie unter -Paket-Manager-Konsole (Visual Studio) für Befehlsoptionen, um eine Teilmenge der Tabellen usw. zu erstellen.See Package Manager Console (Visual Studio) for command options to scaffold a subset of tables etc.

Scaffold-DbContext "<connection string>" <database provider name>

Hier ist z. B. der Befehl zum Erstellen des Gerüsts für ein Modell aus der Blogging-Datenbank auf der SQL Server-LocalDB-Instanz.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 von EF6-ModellRemove EF6 model

Nun möchten, das EF6-Modell von der Anwendung entfernen.You would now remove the EF6 model from your application.

Es ist in Ordnung, das EF6-NuGet-Paket ("EntityFramework"), die installiert ist, zu verlassen, da EF Core und EF6 verwendete Seite-an-Seite in der gleichen Anwendung sein kann.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. Jedoch wenn Sie nicht sind EF6 in alle Bereiche der Anwendung verwenden, können klicken Sie dann das Paket deinstallieren Kompilierungsfehler auf Teile des Codes, die 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 Sie Ihren codeUpdate your code

An diesem Punkt ist es eine Frage der Adressierung Kompilierungsfehler und Überprüfung von Code zu überprüfen, ob die verhaltensänderungen zwischen EF6 und EF Core Auswirkungen informiert.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 Sie den portTest the port

Nur weil die Anwendung kompiliert wird, bedeutet nicht, dass es erfolgreich in EF Core portiert werden.Just because your application compiles, does not mean it is successfully ported to EF Core. Sie benötigen, um alle Bereiche der Anwendung, um sicherzustellen, dass keine der Änderungen des Verhaltens Ihrer Anwendung beeinträchtigt haben zu testen.You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.

Tipp

Finden Sie unter erste Schritte mit EF Core in ASP.NET Core mit einer vorhandenen Datenbank für einen zusätzlichen Verweis auf das Arbeiten mit einer vorhandenen DatenbankSee Getting Started with EF Core on ASP.NET Core with an Existing Database for an additional reference on how to work with an existing database,