2017-09-29 4 views
0

S'il vous plaît aidez-moi avec un inconvénient dans les migrations ef6. Je change très souvent de modèle (parce que je n'ai pas une compréhension complète du schéma). J'ai deux migration: 1. initiale (EF6 génère cette migration par mon modèle) 2. AddtionalInit (un code sql manuel qui doivent être exécuté après l'initialisation)EF6 re-échafaudage migration initiale

Quand je change mon modèle je veux re- échafaudage Migration initiale pour appliquer les modifications. J'émigre à -TargetMigration: 0 et essayer d'exécuter:

add-migration Initial -force 

mais il jette avec une erreur

Unable to generate an explicit migration because the following explicit migrations are pending: [201709290630180_Initial, 201709290631135_AdditionalInit]. Apply the pending explicit migrations before attempting to generate a new explicit migration 

Puis-je ré-échafaudage migration initiale sans supprimer la migration AdditionalInit?

P.S. Désolé pour l'anglais.

Répondre

0

Vous pouvez uniquement ré-échafauder la dernière migration. Vous devez supprimer les migrations après votre migration Initial en conservant quelque part le code ajouté manuellement. Puis re-échafaudage et après cela, rajoutez votre code manuel.

+0

c'est très gênant. Y a-t-il d'autres solutions? –

+0

Il est, mais encore C'est comme ça que ça marche – sabotero

0

Techniquement, vous pouvez utiliser la méthode seed avec Raw SQL pour appliquer des modifications de schéma supplémentaires. Vous devez configurer ce SQL brut pour faire un «contrôle» afin de vous assurer que ses modifications n'ont pas déjà été appliquées avant l'exécution, car la méthode seed est exécutée chaque fois que l'application démarre.

Probablement préférable de le déplacer dans sa propre migration une fois que vos modifications de modèle sont stables, mais c'est une alternative qui fonctionnerait si vous aviez des tonnes de changements de migration en cours de développement.