Je viens de rencontrer le même problème et j'ai utilisé la solution suivante (à partir de la console du gestionnaire de paquets)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Cela créera deux dossiers distincts dans le dossier Migrations. Chacun d'eux contiendra les fichiers Configuration.cs
dossier. Malheureusement, vous devez encore renommer ces Configuration.cs
Sinon, on se plaindra d'en avoir deux. J'ai renommé mes fichiers en ConfigA.cs
y ConfigB.cs
EDIT (avec l'aimable autorisation de Kevin McPheat) N'oubliez pas que lorsque vous renommez les fichiers Configuration.cs, vous devez également renommer les noms des classes et des 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 (ce qui permet de garder ces fichiers ensemble).
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Enfin, ces deux commandes appliqueront les migrations correctes aux bases de données correspondantes.
EDIT 08 Feb, 2016 : J'ai fait quelques tests avec la version 7.0.0-rc1-16348 de EF7.
Je n'ai pas réussi à faire fonctionner l'option -o|--outputDir. Elle continuait à donner Microsoft.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 placée dans le dossier Migrations, et qu'une migration ultérieure pour un autre contexte est automatiquement placée dans un sous-dossier des migrations.
Les noms originaux ContextA
semble violer certaines conventions de dénomination, j'utilise donc maintenant ContextAContext
y ContextBContext
. En utilisant ces noms, vous pouvez utiliser les commandes suivantes : (notez que mon dnx fonctionne toujours à partir de la console du gestionnaire de paquets et que je n'aime pas ouvrir une fenêtre CMD séparée pour effectuer 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 fichier Migrations
dossier pour ContextAContext
. Il créera un dossier nommé ContextB
contenant ces fichiers pour ContextBContext
J'ai ajouté manuellement un ContextA
et déplacé les fichiers de migration de ContextAContext
dans ce dossier. J'ai ensuite renommé l'espace de noms à l'intérieur de ces fichiers (fichier d'instantané, migration initiale et notez qu'il y a un troisième fichier sous le fichier de migration initiale ... designer.cs). J'ai dû ajouter .ContextA
à l'espace de noms, et à partir de là, le cadre de travail le gère à nouveau automatiquement.
Les commandes suivantes permettent de créer 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.
4 votes
Jetez un coup d'œil à Points de données - Migrations EF6 Code First pour des modèles multiples par Julie Lerman