486 votes

Migrations de EF : Rollback appliqué dernière migration ?

Cela ressemble à une tâche très courante, mais je ne peux pas trouver un moyen facile de le faire.

Je veux annuler la dernière migration appliquée. J’aurais souhaité une commande simple, comme

Au lieu de cela, tout ce que je peux trouver est :

(Au moins je peux utiliser simplement le nom, sauter l’horodatage...)

Y a-t-il un moyen plus facile ?

434voto

Jazimov Points 341

Je tiens à ajouter quelques précisions à ce fil:

Update-Database -TargetMigration:"name_of_migration"

Ce que vous faites ci-dessus est à dire que vous souhaitez reprendre toutes les migrations JUSQU'à ce que vous êtes de gauche avec la migration spécifié. Ainsi, si vous utilisez GET-MIGRATIONS et vous trouvez que vous avez A, B, C, D, et E, puis à l'aide de cette commande rollback E et D pour vous rendre à C:

Update-Database -TargetMigration:"C"

Aussi, à moins que n'importe qui peut commenter le contraire, j'ai remarqué que vous pouvez utiliser une valeur ordinale et le court -Cible de l'interrupteur (ainsi, la Cible est la même que -TargetMigration). Si vous souhaitez reprendre toutes les migrations et recommencer, vous pouvez utiliser:

update-database -target:0

0, ci-dessus, la restauration même de la PREMIÈRE migration--quelque chose que vous ne pouvez pas faire si vous utilisez la syntaxe ci-dessus, qui exige que le nom de la cible de la migration (le nom de l'0e migration n'existe pas avant une migration est appliquée!). Donc, dans ce cas, vous devez utiliser le 0 (ordinale). De même, si vous avez appliqué des migrations A, B, C, D et E (dans cet ordre), puis l'ordinal 1 devrait se référer à Une, ordinal 2 doivent se référer à B, et ainsi de suite. Donc, pour revenir à B vous pouvez utiliser soit:

Update-Database -TargetMigration:"B"

ou

Update-Database -TargetMigration:2

223voto

Andrew Peters Points 6012

À partir de EF 5.0, l’approche que vous décrivez est préférable. Une solution serait de créer un wrapper script PS qui automatise les étapes ci-dessus. De plus, n’hésitez pas à créer une demande de fonctionnalité pour cela, ou mieux encore, prendre un coup à mettre en œuvre ! http://EntityFramework.codeplex.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X