web-dev-qa-db-fra.com

Migration C-Code-First, haut / bas?

J'ai commencé à utiliser la commande add-migration dans la console du gestionnaire de packages pour générer les migrations pour mon modèle. Ma question est, la méthode de haut en bas. Je suppose que le but de la méthode down est de supprimer toutes les dépendances et de supprimer les tables si elles sont déjà dans la base de données? Aussi que la méthode down sera exécutée avant la méthode up? La méthode up est alors l'inverse, créer/mettre à jour des tables/index etc?

Parfois, lorsque j'utilise cela, la méthode down obtient beaucoup de tables de création qui sont ensuite supprimées? Récemment, il a créé et supprimé de nombreuses tables et presque la même chose s'est produite dans la méthode up. Pourquoi?

39
Patrick

La méthode Up met à niveau votre base de données de son état actuel (représenté par votre migration précédente) vers l'état attendu par votre migration de code actuelle. La méthode Down effectue l'opération inverse - elle supprime toutes les modifications de la migration actuelle et ramène la base de données à l'état attendu par la migration précédente. C'est comme installer/désinstaller la migration. Une seule de ces méthodes est exécutée lorsque vous appelez update-database. Pour utiliser la méthode Down, vous devez spécifier explicitement la migration cible pour votre mise à niveau. Si la migration cible est la précédente, l'API de migration utilisera automatiquement la méthode Down et rétrogradera votre base de données.

70
Ladislav Mrnka

Juste pour ajouter à @Ladislav Mrnka. J'avais besoin d'utiliser Down () pour la première fois et j'ai mis du temps à le faire fonctionner, donc:

Update-Database -Target:201407242157114_46

Où ma dernière migration est 47 (où de nouvelles choses ont été ajoutées). Voici une belle explication de la façon de restaurer la base de données et de supprimer une mauvaise migration.

J'espère que cela pourrait aider d'autres apprentis magiciens :)

25
HerGiz