Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les migrations Code First peuvent être utilisées pour mettre à jour une base de données à partir de Visual Studio, mais peuvent également être exécutées via l’outil en ligne de commande migrate.exe. Cette page donne une vue d’ensemble rapide de l’utilisation de migrate.exe pour exécuter des migrations sur une base de données.
Note
Cet article part du principe que vous savez comment utiliser les migrations Code First dans des scénarios de base. Si ce n’est pas le cas, vous devez lire Code First Migrations avant de continuer.
Copier migrate.exe
Lorsque vous installez Entity Framework à l’aide de NuGet migrate.exe se trouve dans le dossier outils du package téléchargé. Dans <le dossier> de projet\packages\EntityFramework.<version>\tools
Une fois que vous avez migrate.exe vous devez le copier à l’emplacement de l’assembly qui contient vos migrations.
Si votre application cible .NET 4 et non 4.5, vous devez également copier le Redirect.config dans l’emplacement et le renommer migrate.exe.config. C’est pourquoi migrate.exe obtient les redirections de liaison appropriées pour pouvoir localiser l’assembly Entity Framework.
| .NET 4.5 | .NET 4.0 |
|---|---|
|
|
Note
migrate.exe ne prend pas en charge les assemblys x64.
Une fois que vous avez déplacé migrate.exe vers le dossier approprié, vous devez pouvoir l’utiliser pour exécuter des migrations sur la base de données. Tout l’utilitaire est conçu pour exécuter des migrations. Il ne peut pas générer de migrations ou créer un script SQL.
Afficher les options
Migrate.exe /?
La page d’aide ci-dessus affiche la page d’aide associée à cet utilitaire, notez que vous devrez disposer des EntityFramework.dll dans le même emplacement que celui où vous exécutez migrate.exe pour que cela fonctionne.
Migrer vers la migration la plus récente
Migrate.exe MyMvcApplication.dll /startupConfigurationFile="..\\web.config"
Lorsque vous exécutez migrate.exe le seul paramètre obligatoire est l’assembly, qui est l’assembly qui contient les migrations que vous essayez d’exécuter, mais il utilise tous les paramètres basés sur la convention si vous ne spécifiez pas le fichier de configuration.
Migrer vers une migration spécifique
Migrate.exe MyApp.exe /startupConfigurationFile="MyApp.exe.config" /targetMigration="AddTitle"
Si vous souhaitez exécuter des migrations jusqu’à une migration spécifique, vous pouvez spécifier le nom de la migration. Cette opération exécute toutes les migrations précédentes nécessaires jusqu'à atteindre la migration spécifiée.
Spécifier le répertoire de travail
Migrate.exe MyApp.exe /startupConfigurationFile="MyApp.exe.config" /startupDirectory="c:\\MyApp"
Si votre assembly a des dépendances ou lit des fichiers par rapport au répertoire de travail, vous devez définir startupDirectory.
Spécifier la configuration de migration à utiliser
Migrate.exe MyAssembly CustomConfig /startupConfigurationFile="..\\web.config"
Si vous avez plusieurs classes de configuration de migration, les classes héritent de DbMigrationConfiguration, vous devez spécifier ce qui doit être utilisé pour cette exécution. Cela est spécifié en fournissant le deuxième paramètre facultatif sans commutateur comme indiqué ci-dessus.
Fournir une chaîne de connexion
Migrate.exe BlogDemo.dll /connectionString="Data Source=localhost;Initial Catalog=BlogDemo;Integrated Security=SSPI" /connectionProviderName="System.Data.SqlClient"
Si vous souhaitez spécifier une chaîne de connexion à la ligne de commande, vous devez également fournir le nom du fournisseur. Si vous ne spécifiez pas le nom du fournisseur, une exception est générée.
Problèmes courants
| Message d’erreur | Solution |
|---|---|
| Exception non gérée : System.IO.FileLoadException : Impossible de charger le fichier ou l’assembly « EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5c561934e089 » ou l’une de ses dépendances. ** La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT : 0x80131040) | Cela signifie généralement que vous exécutez une application .NET 4 sans le fichier Redirect.config. Vous devez copier le Redirect.config au même emplacement que migrate.exe et le renommer en migrate.exe.config. |
| Exception non gérée : System.IO.FileLoadException : Impossible de charger le fichier ou l’assembly « EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c5c561934e089 » ou l’une de ses dépendances. La définition du manifeste de l'assembly situé ne correspond pas à la référence de l'assembly. (Exception de HRESULT : 0x80131040) | Cette exception signifie que vous exécutez une application .NET 4.5 avec la Redirect.config copiée à l’emplacement migrate.exe. Si votre application est .NET 4.5, vous n’avez pas besoin d’avoir le fichier de configuration avec les redirections à l’intérieur. Supprimez le fichier migrate.exe.config. |
| ERREUR : Impossible de mettre à jour la base de données pour qu’elle corresponde au modèle actuel, car les modifications en attente et la migration automatique est désactivée. Écrivez les modifications de modèle en attente dans une migration basée sur le code ou activez la migration automatique. Définissez DbMigrationsConfiguration.AutomaticMigrationsEnabled sur true pour activer la migration automatique. | Cette erreur se produit si vous exécutez la migration lorsque vous n’avez pas créé de migration pour faire face aux modifications apportées au modèle et que la base de données ne correspond pas au modèle. Ajouter une propriété à une classe de modèle, puis exécuter migrate.exe sans créer de migration pour mettre à jour la base de données est un exemple de cela. |
| ERREUR : Le type n’est pas résolu pour le membre « System.Data.Entity.Migrations.Design.ToolingFacade+UpdateRunner,EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. | Cette erreur peut être due à la spécification d’un répertoire de démarrage incorrect. Il doit s’agir de l’emplacement de migrate.exe |
| Exception non gérée : System.NullReferenceException : Référence d’objet non définie sur une instance d’un objet. sur System.Data.Entity.Migrations.Console.Program.Main(String[] args) |
Cela peut être dû à la non spécification d’un paramètre requis pour un scénario que vous utilisez. Par exemple, la spécification d’une chaîne de connexion sans spécifier le nom du fournisseur. |
| ERREUR : Plusieurs types de configuration de migration ont été trouvés dans l’assembly « ClassLibrary1 ». Spécifiez le nom de celui à utiliser. | Comme l’indique l’erreur, il existe plusieurs classes de configuration dans l’assembly donné. Vous devez utiliser le commutateur /configurationType pour spécifier lequel utiliser. |
| ERREUR : Impossible de charger le fichier ou l’assembly '<assemblyName>' ou l’une de ses dépendances. Le nom d’assembly ou le codebase donné n’était pas valide. (Exception de HRESULT : 0x80131047) | Cela peut être dû à la spécification incorrecte d’un nom d’assembly ou l'absence de |
| ERREUR : Impossible de charger le fichier ou l’assembly '<assemblyName>' ou l’une de ses dépendances. Tentative de chargement d’un programme au format incorrect. | Cela se produit si vous essayez d’exécuter migrate.exe sur une application x64. EF 5.0 et versions antérieures fonctionnent uniquement sur x86. |