380 votes

Réinitialisation des migrations Entity-Framework

J'ai gâché mes migrations, j'ai utilisé IgnoreChanges sur la migration initiale, mais je veux maintenant supprimer toutes mes migrations et commencer par une migration initiale avec toute la logique.

Lorsque je supprime les migrations dans le dossier et que j'essaie et Add-Migration il ne génère pas un fichier complet (il est vide - parce que je n'ai fait aucune modification depuis ma dernière migration, maintenant supprimée).

Y a-t-il un Désactiver les migrations pour que je puisse réexécuter Enable-Migrations ?

1 votes

3 votes

Une note importante si vous avez plusieurs chaînes de connexion : spécifiez laquelle utiliser lorsque vous réinitialisez les migrations, sinon elle essaiera de s'appliquer aux deux, ce qui peut causer des problèmes en cas de divergences.

0 votes

Remarque : si vous n'aviez pas supprimé vos migrations (vous utilisez le contrôle de version, n'est-ce pas ?), vous auriez pu mettre à jour votre base de données vers votre première migration, puis supprimer l'atténuation et créer de nouvelles migrations à partir de ce point. Voir ici : stackoverflow.com/a/23793384/309634

1voto

adudley Points 343

En EF6

  1. Supprimez tous vos fichiers dans le dossier 'migrations'... Mais pas les fichiers 'initial create' ou 'config'.
  2. Supprimez la base de données.
  3. Exécutez maintenant Add-Migration Initial .
  4. Maintenant, vous pouvez "mettre à jour la base de données" et tout ira bien.

0voto

greenCodeMonkey Points 11

Dans Net Core 3.0 :

Je n'ai pas réussi à trouver un moyen de Réinitialiser les migrations .

J'ai également rencontré des problèmes avec des migrations cassées, et les réponses fournies ici n'ont pas fonctionné pour moi. J'ai une API Web .Net Core 3.0 et, quelque part au cours du mois dernier, j'ai modifié directement la base de données. Oui, j'ai fait une très mauvaise chose.

Les stratégies suggérées ici ont entraîné un certain nombre d'erreurs dans la console Package Manager :

  • Une migration de ce nom existe déjà
  • Impossible de trouver le snapshot
  • La "force" n'est pas un paramètre reconnu

Il se peut que j'aie oublié une étape ou que je n'aie pas effacé les bons fichiers, mais j'ai découvert qu'il existe des moyens de nettoyer tout cela sans avoir recours à la force brute :

  • Remove-Migration à partir du PMC pour chaque migration par nom, dans l'ordre inverse de la création, jusqu'à la migration brisée incluse.
  • Add-Migration pour créer une nouvelle migration qui sera le delta entre la dernière bonne migration jusqu'au schéma actuel.

Désormais, lorsque l'API Web est lancée avec une base de données vide, elle crée correctement toutes les tables et propriétés correspondant aux modèles d'entités.

HTH !

0voto

Diego Venâncio Points 1335

UPDATE 2020 => Réinitialisation des migrations Entity-Framework

Add-Migration Initial -Context ApplicationDbContext

ApplicationDbContext \=> Votre contexte.

Mais si vous avez seulement besoin de mettre à jour un schéma d'identité existant, essayez-le : https://stackoverflow.com/a/59966100/4654957

-2voto

Debendra Dash Points 1932
Enable-Migrations -EnableAutomaticMigrations -Force

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