J'ai foiré mes migrations, j'ai utilisé IgnoreChanges
sur la migration initiale, mais maintenant je veux 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 de Add-Migration
ne pas générer de fichier complet (il est vide - car je n'ai apporté aucune modification depuis ma dernière migration, mais maintenant supprimé).
Existe-t-il une commande Disable-Migrations , afin que je puisse réexécuter Enable-Migrations
?
Réponses:
Tu dois :
__MigrationHistory
table dans votre base de données (peut-être sous les tables système); ensuiteExécutez la commande suivante dans la console du gestionnaire de packages:
Utiliser avec ou sans
-EnableAutomaticMigrations
Et enfin, vous pouvez exécuter:
la source
Le problème: vous avez détruit vos migrations et vous souhaitez le réinitialiser sans supprimer vos tables existantes.
Le problème: vous ne pouvez pas réinitialiser les migrations avec les tables existantes dans la base de données car EF souhaite créer les tables à partir de zéro.
Que faire:
Supprimez les migrations existantes de la table Migrations_History.
Supprimez les migrations existantes du dossier Migrations.
Exécutez la réinitialisation de l'add-migration. Cela créera une migration dans votre dossier de migration qui comprend la création des tables (mais il ne l'exécutera pas et ne générera pas d'erreur.)
Vous devez maintenant créer la ligne initiale dans la table MigrationHistory pour qu'EF ait un instantané de l'état actuel. EF le fera si vous appliquez une migration. Cependant, vous ne pouvez pas appliquer la migration que vous venez d'effectuer, car les tables existent déjà dans votre base de données. Alors, allez dans la migration et commentez tout le code à l'intérieur de la méthode "Up".
Maintenant, lancez update-database. Il appliquera la migration (sans modifier réellement la base de données) et créera une ligne d'instantané dans MigrationHistory.
Vous avez maintenant réinitialisé vos migrations et pouvez continuer avec des migrations normales.
la source
Que diriez-vous
dans la console du gestionnaire de packages? Il devrait réinitialiser toutes les mises à jour à son état très précoce.
Lien de référence: Code First Migrations - Migration vers une version spécifique (y compris la mise à niveau inférieure)
la source
Pour résoudre ce problème, vous devez:
Supprimez tous les fichiers * .cs du dossier Migrations.
Supprimer la table _MigrationHistory dans la base de données
Courir
Enable-Migrations -EnableAutomaticMigrations -Force
Courir
Add-Migration Reset
Ensuite, dans la
public partial class Reset : DbMigration
classe, vous devez commenter toutes les tables existantes et actuelles:Si vous manquez ce bit, tout échouera et vous devrez recommencer!
Update-Database -verbose
Cela devrait réussir si vous avez fait correctement ce qui précède, et maintenant vous pouvez continuer comme d'habitude.
la source
Étant donné que cela apparaît toujours lorsque nous recherchons EF dans .NET Core, je posterai ma réponse ici (car cela m'a beaucoup hanté). Notez qu'il existe certaines subtilités avec la version EF 6 .NET (pas de commande initiale, et vous devrez supprimer les fichiers "Snapshot")
(Testé dans .NET Core 2.1)
Voici les étapes:
_efmigrationhistory
tableau.ApplicationDbContextSnapshot.cs
, et supprimez- les.Add-Migration InitialMigration
Remarque: vous devez supprimer TOUS les fichiers d'instantanés . J'ai passé d'innombrables heures à supprimer la base de données ... Cela générera une migration vide si vous ne le faites pas.
De plus, dans # 3, vous pouvez simplement nommer votre migration comme vous le souhaitez.
Voici quelques ressources supplémentaires: asp.net CORE Migrations générées vides
Réinitialiser les migrations Entity Framework 7
la source
Dans EntityFramework 6, veuillez essayer:
afin de mettre à jour le fichier de migration initial.
la source
Dans Entity Framework Core.
la source
Mon problème s'est avéré être la suppression manuelle du dossier Migrations. Je l'ai fait parce que je voulais sauvegarder le contenu, j'ai donc simplement fait glisser le dossier hors du projet. J'ai ensuite résolu le problème en le replaçant (après avoir effectué une copie de sauvegarde), puis en supprimant le dossier Migrations en cliquant dessus avec le bouton droit dans l'Explorateur de solutions et en choisissant Supprimer dans le menu contextuel.
la source
Dans EF6
Add-Migration Initial
.la source
Supprimez le
Migrations
dossier,Clean
puisRebuild
le projet. Cela a fonctionné pour moi. Avant de nettoyer et de reconstruire, il disait que la migration existe déjà car dans sa mémoire cache, elle n'est pas encore supprimée.la source
Cette méthode ne nécessite pas la suppression de la
__MigrationHistory
table, vous n'avez donc pas à mettre la main sur la base de données lors du déploiement.Add-Migration ResetMigrations
Up()
méthode:la source
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 interrompues 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 dernier mois, j'ai modifié la base de données directement. Oui, j'ai fait une mauvaise, mauvaise chose.
Les stratégies suggérées ici ont entraîné un certain nombre d'erreurs dans la console du gestionnaire de packages:
Certes, j'ai peut-être manqué une étape ou manqué d'effacer les fichiers corrects, mais j'ai trouvé qu'il existe des moyens de nettoyer cela sans autant de force brute:
Désormais, lorsque l'API Web est démarrée avec une base de données vide, elle crée correctement toutes les tables et propriétés pour correspondre aux modèles d'entité.
HTH!
la source
MISE À JOUR 2020
ApplicationDbContext => Votre contexte.
la source
la source