Fusionner les migrations dans entity-framework-core

asp.net-core c# entity-framework entity-framework-core

Question

Est-il possible de fusionner tous les fichiers de migration en un seul?

J'ai créé la migration initiale.

dotnet ef migrations add InitialMigration

La source

Chaque fois que j'ai un changement de modèle, je crée une nouvelle mise à jour de la migration.

Mais maintenant, j'ai trop de fichiers de mise à jour de migration. Est-il possible de fusionner tous les fichiers de migration en un seul?

Bien sûr, la base de données de largage n'est pas une option, je dois préserver les données!

Réponse acceptée

EF 6.X a une option IgnoreChanges . C'est la solution idéale pour votre scénario. Mais malheureusement, ce n’est pas une fonctionnalité disponible dans EF core.

Mais il existe une solution de contournement.

Étape 1: supprimez tous les scripts de migration du dossier Migrations.

Étape 2: Dans la console du gestionnaire de paquets: exécutez

PM> Add-Migration InitialCreate

Étape 3: Supprimez le code des méthodes Up() et Down() . Avant de faire cela, conservez ces méthodes ailleurs, car nous en aurons besoin à nouveau à l'étape 5.

Étape 4: exécuter:

 PM> Update-Database

Il va insérer un nouvel enregistrement dans la table __EFMigrationsHistory .

Étape 5: Ensuite, remplissez les .._InitialCreate script de migration ci-dessus (par exemple, .._InitialCreate ) Up() et Down() partir du contenu conservé dans un endroit sûr à partir de l' étape 3 .

C'est ça. Maintenant, vous avez seulement 1 fichier de migration :)

Remarque: noyau EF avec console du gestionnaire de packages (PM): Console du gestionnaire de packages


Réponse populaire

Une façon de le faire consiste à supprimer physiquement tous les fichiers de migration et à en ajouter un nouveau. Si vos migrations se trouvent dans le dossier "Migrations", vous pouvez simplement le supprimer, sinon vous devez également supprimer votre fichier "ModelSnapshot". Je pense que cette approche peut résoudre votre problème.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow