Partager via


Portage d'un modèle EF6 EDMX vers EF Core

EF Core ne prend pas en charge le format de fichier EDMX pour les modèles. La meilleure option pour porter ces modèles consiste à générer un nouveau modèle basé sur du code à partir de la base de données de votre application.

Installer des packages EF Core NuGet

Installez le package NuGet Microsoft.EntityFrameworkCore.Tools.

Réécrire le modèle

Vous pouvez désormais utiliser la fonctionnalité d'ingénieur inverse pour créer un modèle basé sur votre base de données existante.

Exécutez la commande suivante dans la console du Gestionnaire de package (Outils –> Gestionnaire de package NuGet –> Console du Gestionnaire de package). Reportez-vous à la console du Gestionnaire de package (Visual Studio) pour connaître les options de commande permettant de générer une structure d'un sous-ensemble de tables, etc.

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

Par exemple, voici la commande permettant de générer une structure d'un modèle à partir de la base de données de blogs sur votre instance SQL Server LocalDB.

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

Supprimer le modèle EF6

Vous supprimez maintenant le modèle EF6 de votre application.

Il est très utile de ne pas désinstaller le package EF6 NuGet (EntityFramework), car EF Core et EF6 peuvent être utilisés côte à côte dans la même application. Toutefois, si vous n'envisagez pas d'utiliser EF6 dans des domaines de votre application, la désinstallation du package vous aidera à concentrer les erreurs du compilateur sur des éléments de code qui ont besoin d'attention.

Mettre à jour votre code

À ce stade, il s'agit de traiter les erreurs de compilation et d'examiner le code pour voir si le comportement change entre EF6 et EF Core vous impactera.

Tester le port

La réussite de la compilation de votre application ne signifie pas pour autant que sont portage vers EF Core a réussi. Vous devez tester toutes les zones de votre application pour vous assurer qu'aucun des changements de comportement n'a eu d'impact négatif sur votre application.

Autres éléments à prendre en compte

EF Core ne prend pas en charge le fournisseur EntityClient. Par conséquent, toutes les requêtes EntitySQL doivent être migrées vers LINQ ou FromRawSql.

En outre, il n'existe aucune prise en charge des chaînes de connexion EntityClient.

Pour plus d'informations, lisez le guide complet des différences entre EF6 et EF Core.