2017-02-23 1 views
0

Lorsque vous utilisez le code premier que je ce scénario:-base de données mise à jour avec le code premier et clé étrangère qui est nécessaire ne fonctionne pas

j'ai une base de données existante où les tables sont créées avec le code premier. Sachant soudainement il doit y avoir un changement dans le programme et il y a une nouvelle table qui est liée à la table primaire (avec des données existantes).

exemple il y a une table "Package" et la nouvelle table est "PackageState"

étapes

  1. Créer un nouveau domaine Packagestate avec certaines propriétés.

  2. Ajoutez la propriété packagestate (FK) dans le domaine de package. (P) Notez que l'emballage est requis.

  3. Dans la classe d'ensemencement i ajouter des données pour le packagestate

A partir de ce point que j'ai un problème, parce que la valeur est nécessaire, et la méthode d'ensemencement est exécutée uniquement après la mise à jour.

Comment résolvez-vous ceci avec le code d'abord?

Parce qu'il est possible qu'il existe également un nouveau fichier de migration.

J'ai besoin de commentaires à ce sujet, merci d'avance!

Répondre

0

Vous devez rendre votre clé étrangère NULL et mettre à jour votre base de données après que vous pouvez exécuter votre graine. et après tout, vous devriez changer votre clé étrangère à non null.

+0

Je sais ... mais j'ai remarqué que ce n'est pas possible dans 1 commande update-database. -> et avec l'action de la graine. Mon but était d'éviter plusieurs déploiements. –