Dans Entity Framework 6, j'utilise la commande Update-Database pour appliquer les migrations. J'ai trois environnements que je jongle (DEV, QA et PROD), et je les mets à niveau en utilisant
Update-Database -ConnectionStringName DEV
Mais, maintenant, j'aimerais savoir à quelle migration se trouve mon environnement PROD et quelles migrations seront appliquées si j'appelle Update-Database.
Existe-t-il une commande pour vérifier quelle migration est la dernière appliquée et laquelle sera appliquée si j'exécute Update-Database?
Pour voir quelles migrations ont été appliquées à la base de données, utilisez la commande Get-Migrations
:
Get-Migrations -ConnectionStringName PROD
Vous pouvez également vérifier le contenu du tableau __MigrationsHistory
dans la bonne base de données. Il contient des informations sur toutes les migrations appliquées à la base de données.
La prochaine migration appliquée dépend des fichiers de migration existants dans votre projet. Un nom de fichier de migration inclut un préfixe qui est un horodatage, qui spécifie l'heure à laquelle le fichier de migration a été généré (sauf si vous avez utilisé le -force
paramètre pouvant entraîner la réutilisation d'un fichier de migration existant en conservant sa chaîne d'horodatage existante). Les migrations sont appliquées en fonction de cet horodatage. Ainsi, l'ordre alphabétique de vos fichiers de migration indique l'ordre dans lequel ils sont appliqués.
Un moyen sûr de vérifier quelle migration sera appliquée ensuite est d'exécuter Update-Database
avec le -Script
paramètre, qui génère le script SQL pour la migration mais ne l'exécute pas. Ainsi, vous pouvez voir quelle migration serait appliquée si vous exécutez le vrai Update-Database
.