Portieren von EF6 Code basierende Modell EF-KernPorting an EF6 Code-Based Model to EF Core

Wenn Sie alle Einschränkungen gelesen haben und Sie bereit, Port sind, sind hier einige Richtlinien, die Ihnen beim Einstieg helfen.If you've read all the caveats and you are ready to port, then here are some guidelines to help you get started.

Installieren von EF Core NuGet-PaketeInstall EF Core NuGet packages

Wenn EF Core verwenden möchten, installieren Sie das NuGet-Paket für den Datenbankanbieter, die, den Sie verwenden möchten.To use EF Core, you install the NuGet package for the database provider you want to use. Beispielsweise, wenn SQL Server verwenden möchten, Sie würden installieren Microsoft.EntityFrameworkCore.SqlServer.For example, when targeting SQL Server, you would install Microsoft.EntityFrameworkCore.SqlServer. Finden Sie unter Datenbankanbieter Details.See Database Providers for details.

Wenn Sie planen die Migrationen zu verwenden, installieren Sie auch die Microsoft.EntityFrameworkCore.Tools Paket.If you are planning to use migrations, then you should also install the Microsoft.EntityFrameworkCore.Tools package.

Es ist in Ordnung, um das EF6 NuGet-Paket (EntityFramework) installiert ist, zu lassen, als EF Core und EF6 verwendete Seite-an-Seite in derselben Anwendung sein 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. Jedoch wenn Sie nicht sind EF6 in alle Bereiche der Anwendung zu verwenden, können klicken Sie dann das Paket deinstallieren Kompilierungsfehler auf Codeabschnitte, die 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.

Swap-namespacesSwap namespaces

Die meisten APIs, die in EF6 verwendet werden, der System.Data.Entity Namespace (und in verwandten Sub-Namespaces).Most APIs that you use in EF6 are in the System.Data.Entity namespace (and related sub-namespaces). Die erste Änderung des Codes wird zum Austauschen der Microsoft.EntityFrameworkCore Namespace.The first code change is to swap to the Microsoft.EntityFrameworkCore namespace. Sie würden in der Regel beginnen Sie mit der abgeleiteten Kontext Codedatei und dann ausarbeiten dort Adressierung Kompilierungsfehler, sobald sie auftreten.You would typically start with your derived context code file and then work out from there, addressing compilation errors as they occur.

Konfiguration des Sicherheitskontexts (Verbindung usw.).Context configuration (connection etc.)

Wie in beschrieben sicherzustellen EF wird Hauptarbeit, das für die Anwendung, EF Core hat weniger Magic, um das Erkennen von der Datenbank für die Verbindung.As described in Ensure EF Core Will Work for Your Application, EF Core has less magic around detecting the database to connect to. Müssen Sie überschreiben die OnConfiguring Methode auf dem abgeleiteten Kontext und verwenden Sie die Datenbank-API-Anbieter spezifische beim Einrichten der Verbindung mit der Datenbank.You will need to override the OnConfiguring method on your derived context, and use the database provider specific API to setup the connection to the database.

Die meisten EF6 Anwendungen die Verbindungszeichenfolge speichern, die in der Anwendung App/Web.config Datei.Most EF6 applications store the connection string in the applications App/Web.config file. In der EF-Kern, Sie Lesen dieser Verbindungszeichenfolge mithilfe der ConfigurationManager API.In EF Core, you read this connection string using the ConfigurationManager API. Sie müssen möglicherweise einen Verweis auf Hinzufügen der System.Configuration Framework-Assembly, um diese API verwenden zu können.You may need to add a reference to the System.Configuration framework assembly to be able to use this API.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
    }
}

Aktualisieren Sie den codeUpdate your code

An diesem Punkt ist es nur wenige Adressierung Kompilierungsfehler enthält, und Überprüfen von Code, um festzustellen, ob die verändertes Programmverhalten auswirkt.At this point, it's a matter of addressing compilation errors and reviewing code to see if the behavior changes will impact you.

Vorhandene MigrationenExisting migrations

Es ist eigentlich möglich ermöglichen die vorhandene EF6-Migrationen zu EF Core.There isn't really a feasible way to port existing EF6 migrations to EF Core.

Wenn möglich, empfiehlt es sich, wird davon ausgegangen, dass alle vorherigen Migrationen von EF6 an die Datenbank angewendet wurden, und zeigen Sie dann das Schema aus, die Migration starten mit EF Core.If possible, it is best to assume that all previous migrations from EF6 have been applied to the database and then start migrating the schema from that point using EF Core. Zu diesem Zweck verwenden Sie die Add-Migration Befehl aus, um eine Migration hinzufügen, nachdem das Modell zu EF Core portiert werden.To do this, you would use the Add-Migration command to add a migration once the model is ported to EF Core. Sie würden dann entfernen Sie sämtlichen Code aus der Up und Down Methoden der scaffolded Migration.You would then remove all code from the Up and Down methods of the scaffolded migration. Nachfolgende Migrationen werden für das Modell verglichen, wenn diese anfänglichen Migration Gerüstbau wurde.Subsequent migrations will compare to the model when that initial migration was scaffolded.

Testen Sie den portTest the port

Einfach, da die Anwendung kompiliert wird, bedeutet nicht, dass es erfolgreich zu EF Core portiert werden.Just because your application compiles, does not mean it is successfully ported to EF Core. Sie müssen zum Testen der Anwendung, um sicherzustellen, dass keines der verhaltensänderungen Ihrer Anwendung negativ beeinträchtigt, haben alle Bereiche.You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.