Właśnie natknąłem się na ten sam problem i użyłem następującego rozwiązania (wszystko z konsoli Menedżera pakietów)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Spowoduje to utworzenie 2 oddzielnych folderów w folderze Migracje. Każdy będzie zawierał wygenerowany Configuration.cs
plik. Niestety nadal musisz zmienić nazwy tych Configuration.cs
plików, w przeciwnym razie pojawią się skargi dotyczące posiadania dwóch z nich. Zmieniłem nazwy moich plików na ConfigA.cs
iConfigB.cs
EDYTUJ : (dzięki uprzejmości Kevina McPheata) Pamiętaj, zmieniając nazwy plików Configuration.cs, zmień także nazwy klas i konstruktorów / EDYCJA
Dzięki tej strukturze możesz po prostu to zrobić
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Który utworzy pliki kodu do migracji w folderze obok plików konfiguracyjnych (dobrze jest trzymać te pliki razem)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
I wreszcie, te dwa polecenia zastosują poprawne migracje do odpowiednich baz danych.
EDYCJA 08 lutego 2016:
Przeprowadziłem małe testy z EF7 w wersji 7.0.0-rc1-16348
Nie mogłem zmusić opcji -o | --outputDir do działania. Nadal dawałMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Wygląda jednak na to, że po dodaniu migracji po raz pierwszy jest ona dodawana do folderu Migrations, a kolejna migracja do innego kontekstu jest automatycznie umieszczana w podfolderze migracji.
ContextA
Wydaje się, że oryginalne nazwy naruszają niektóre konwencje nazewnictwa, więc używam teraz ContextAContext
i ContextBContext
. Używając tych nazw, możesz użyć następujących poleceń: (zwróć uwagę, że mój dnx nadal działa z konsoli menedżera pakietów i nie lubię otwierać osobnego okna CMD do wykonywania migracji)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Spowoduje to utworzenie migawki modelu i początkowej migracji w Migrations
folderze dla ContextAContext
. Utworzy folder o nazwie ContextB
zawierający te pliki dlaContextBContext
Ręcznie dodałem ContextA
folder i przeniosłem pliki migracji z ContextAContext
do tego folderu. Następnie zmieniłem nazwę przestrzeni nazw w tych plikach (plik migawki, początkowa migracja i zauważam, że pod początkowym plikiem migracji znajduje się trzeci plik ... designer.cs). Musiałem dodać coś do .ContextA
przestrzeni nazw, a stamtąd framework ponownie obsługuje to automatycznie.
Użycie poniższych poleceń spowodowałoby utworzenie nowej migracji dla każdego kontekstu
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
a wygenerowane pliki są umieszczane w odpowiednich folderach.