Je viens de tomber sur le même problème et j'ai utilisé la solution suivante (tout à partir de la console du gestionnaire de package)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Cela créera 2 dossiers séparés dans le dossier Migrations. Chacun contiendra le Configuration.cs
fichier généré . Malheureusement, vous devez toujours renommer ces Configuration.cs
fichiers, sinon il y aura des plaintes à propos de deux d'entre eux. J'ai renommé mes fichiers en ConfigA.cs
etConfigB.cs
EDIT : (avec la permission de Kevin McPheat) N'oubliez pas lorsque vous renommez les fichiers Configuration.cs, renommez également les noms de classe et les constructeurs / EDIT
Avec cette structure, vous pouvez simplement faire
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Ce qui créera les fichiers de code pour la migration dans le dossier à côté des fichiers de configuration (c'est bien de garder ces fichiers ensemble)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Enfin, ces deux commandes appliqueront les migrations correctes à leurs bases de données correspondantes.
EDIT 08 février 2016:
J'ai fait un petit test avec EF7 version 7.0.0-rc1-16348
Je n'ai pas pu faire fonctionner l'option -o | --outputDir. Il a continué à donnerMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Cependant, il semble que la première fois qu'une migration est ajoutée, elle est ajoutée dans le dossier Migrations, et une migration ultérieure pour un autre contexte est automatiquement placée dans un sous-dossier de migrations.
Les noms originaux ContextA
semblent enfreindre certaines conventions de dénomination, j'utilise maintenant ContextAContext
et ContextBContext
. En utilisant ces noms, vous pouvez utiliser les commandes suivantes: (notez que mon dnx fonctionne toujours à partir de la console du gestionnaire de packages et que je n'aime pas ouvrir une fenêtre CMD séparée pour faire des migrations)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Cela créera un instantané du modèle et une migration initiale dans le Migrations
dossier pour ContextAContext
. Il créera un dossier nommé ContextB
contenant ces fichiers pourContextBContext
J'ai ajouté manuellement un ContextA
dossier et déplacé les fichiers de migration depuis ContextAContext
ce dossier. Ensuite, j'ai renommé l'espace de noms à l'intérieur de ces fichiers (fichier instantané, migration initiale et note qu'il y a un troisième fichier sous le fichier de migration initial ... designer.cs). J'ai dû ajouter .ContextA
à l'espace de noms, et à partir de là, le framework le gère à nouveau automatiquement.
L'utilisation des commandes suivantes créerait une nouvelle migration pour chaque contexte
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
et les fichiers générés sont placés dans les bons dossiers.