Portage d’un modèle de Code EF6 vers EF CorePorting an EF6 Code-Based Model to EF Core

Si vous avez lu toutes les mises en garde et que vous êtes prêt à un port, voici quelques indications pour vous aider à démarrer.If you've read all the caveats and you are ready to port, then here are some guidelines to help you get started.

Installer les packages NuGet de noyaux EFInstall EF Core NuGet packages

Pour utiliser EF Core, vous installez le package NuGet pour le fournisseur de base de données que vous souhaitez utiliser.To use EF Core, you install the NuGet package for the database provider you want to use. Par exemple, si vous ciblez SQL Server, vous installez Microsoft.EntityFrameworkCore.SqlServer.For example, when targeting SQL Server, you would install Microsoft.EntityFrameworkCore.SqlServer. Consultez les fournisseurs de base de données pour plus d’informations.See Database Providers for details.

Si vous envisagez d’utiliser la migration, vous devez également installer le Microsoft.EntityFrameworkCore.Tools package.If you are planning to use migrations, then you should also install the Microsoft.EntityFrameworkCore.Tools package.

Il convient de laisser le package NuGet de EF6 (EntityFramework) est installé, comme EF Core et EF6 peuvent être utilisé côte à côte dans la même application.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. Toutefois, si vous n’êtes pas l’intention d’utiliser des EF6 dans les zones de votre application, puis désinstaller le package vous permettent d’exercer des erreurs de compilation sur les segments de code nécessitant une attention particulière.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.

Remplacez les espaces de nomsSwap namespaces

La plupart des API que vous utilisez dans EF6 se trouvent dans le System.Data.Entity espace de noms (et les sous-espaces de noms).Most APIs that you use in EF6 are in the System.Data.Entity namespace (and related sub-namespaces). La première modification de code est disponible pour le remplacement à la Microsoft.EntityFrameworkCore espace de noms.The first code change is to swap to the Microsoft.EntityFrameworkCore namespace. Vous commencent généralement par votre fichier de code de contexte dérivée et puis élaborer à partir de là, traite les erreurs de compilation lorsqu’elles se produisent.You would typically start with your derived context code file and then work out from there, addressing compilation errors as they occur.

Configuration du contexte de (connexion etc..)Context configuration (connection etc.)

Comme décrit dans Vérifiez EF travail principal sera lié pour votre Application, EF Core a moins magic autour de détection pour se connecter à la base de données.As described in Ensure EF Core Will Work for Your Application, EF Core has less magic around detecting the database to connect to. Vous devez remplacer le OnConfiguring méthode sur votre contexte dérivée et utilisez l’API de fournisseur de base de données spécifique pour le programme d’installation de la connexion à la base de données.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.

La plupart des applications EF6 stocker la chaîne de connexion dans les applications App/Web.config fichier.Most EF6 applications store the connection string in the applications App/Web.config file. Dans EF Core, vous lisez cette chaîne de connexion à l’aide de la ConfigurationManager API.In EF Core, you read this connection string using the ConfigurationManager API. Vous devrez peut-être ajouter une référence à la System.Configuration assembly framework pour être en mesure d’utiliser cette API.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);
    }
}

Mettre à jour votre code.Update your code

À ce stade, il est une question d’adressage des erreurs de compilation et de révision de code pour voir si les modifications de comportement auront un impact.At this point, it's a matter of addressing compilation errors and reviewing code to see if the behavior changes will impact you.

Migrations existantesExisting migrations

Il n’est pas vraiment possible permettent de déplacer des migrations EF6 existantes vers EF Core.There isn't really a feasible way to port existing EF6 migrations to EF Core.

Si possible, il est préférable de supposer que toutes les migrations précédentes à partir de EF6 ont été appliquées à la base de données et de puis démarrer le schéma de la migration à partir de ce point à l’aide de 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. Pour ce faire, vous devez utiliser le Add-Migration commande pour ajouter une migration, une fois que le modèle est déplacée vers EF Core.To do this, you would use the Add-Migration command to add a migration once the model is ported to EF Core. Vous pouvez supprimer puis de tout le code à partir de la Up et Down méthodes de la migration du modèle généré automatiquement.You would then remove all code from the Up and Down methods of the scaffolded migration. Les migrations suivantes compare au modèle lorsque par la migration initiale a été structurée.Subsequent migrations will compare to the model when that initial migration was scaffolded.

Le port de testTest the port

Le simple fait que votre application est compilé, ne signifie pas qu’il est correctement déplacée vers EF Core.Just because your application compiles, does not mean it is successfully ported to EF Core. Vous devez tester toutes les zones de votre application pour vous assurer qu’aucun des changements de comportement ont affectées votre application.You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.