web-dev-qa-db-fra.com

Vérifier les migrations en attente dans Entity Framework?

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?

13
Frode Lillerud

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.

16
Diana