Mi sono appena imbattuto nello stesso problema e ho usato la seguente soluzione (tutto da Package Manager Console)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Questo creerà 2 cartelle separate nella cartella Migrations. Ciascuno conterrà il Configuration.cs
file generato . Sfortunatamente devi ancora rinominare quei Configuration.cs
file altrimenti ci saranno dei reclami per averne due. Ho rinominato i miei file in ConfigA.cs
eConfigB.cs
EDIT : (per gentile concessione di Kevin McPheat) Ricorda quando rinomini i file Configuration.cs, rinomina anche i nomi delle classi e dei costruttori / EDIT
Con questa struttura puoi semplicemente fare
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Che creerà i file di codice per la migrazione all'interno della cartella accanto ai file di configurazione (è bello tenere insieme quei file)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
E, ultimo ma non meno importante, questi due comandi applicheranno le migrazioni corrette ai database corrispondenti.
EDIT 08 febbraio 2016:
ho fatto un piccolo test con EF7 versione 7.0.0-rc1-16348
Non sono riuscito a far funzionare l'opzione -o | --outputDir. Ha continuato a dareMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Tuttavia sembra che la prima volta che viene aggiunta una migrazione, questa viene aggiunta alla cartella Migrations e una successiva migrazione per un altro contesto viene automaticamente inserita in una sottocartella delle migrazioni.
I nomi originali ContextA
sembrano violare alcune convenzioni di denominazione, quindi ora uso ContextAContext
e ContextBContext
. Usando questi nomi potresti usare i seguenti comandi: (nota che il mio dnx funziona ancora dalla console del gestore pacchetti e non mi piace aprire una finestra CMD separata per fare le migrazioni)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Questo creerà un'istantanea del modello e una migrazione iniziale nella Migrations
cartella per ContextAContext
. Creerà una cartella denominata ContextB
contenente questi file perContextBContext
Ho aggiunto manualmente una ContextA
cartella e ho spostato i file di migrazione da ContextAContext
in quella cartella. Quindi ho rinominato lo spazio dei nomi all'interno di quei file (file snapshot, migrazione iniziale e nota che c'è un terzo file sotto il file di migrazione iniziale ... designer.cs). Ho dovuto aggiungere .ContextA
allo spazio dei nomi e da lì il framework lo gestisce di nuovo automaticamente.
L'utilizzo dei seguenti comandi creerebbe una nuova migrazione per ogni contesto
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
ei file generati vengono inseriti nelle cartelle corrette.