Ich bin gerade auf dasselbe Problem gestoßen und habe die folgende Lösung verwendet (alle von Package Manager Console).
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Dadurch werden zwei separate Ordner im Migrationsordner erstellt. Jedes enthält die generierte Configuration.cs
Datei. Leider müssen Sie diese Configuration.cs
Dateien noch umbenennen, da sonst Beschwerden über zwei davon auftreten. Ich habe meine Dateien in ConfigA.cs
und umbenanntConfigB.cs
BEARBEITEN : (mit freundlicher Genehmigung von Kevin McPheat) Denken Sie beim Umbenennen der Configuration.cs-Dateien auch daran, die Klassennamen und Konstruktoren / EDIT umzubenennen
Mit dieser Struktur können Sie einfach tun
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Dadurch werden die Codedateien für die Migration im Ordner neben den Konfigurationsdateien erstellt (dies ist hilfreich, um diese Dateien zusammenzuhalten).
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Und last but not least wenden diese beiden Befehle die richtigen Migrationen auf die entsprechenden Datenbanken an.
EDIT 08 Feb, 2016:
Ich habe ein wenig mit EF7 Version 7.0.0-rc1-16348 getestet
Ich konnte die Option -o | --outputDir nicht zum Laufen bringen. Es gab weiterMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Es sieht jedoch so aus, als würde eine Migration beim ersten Hinzufügen zum Ordner "Migrationen" hinzugefügt, und eine nachfolgende Migration für einen anderen Kontext wird automatisch in einen Unterordner von Migrationen eingefügt.
Die ursprünglichen Namen ContextA
scheinen gegen einige Namenskonventionen zu verstoßen, daher verwende ich jetzt ContextAContext
undContextBContext
. Unter Verwendung dieser Namen können Sie die folgenden Befehle verwenden: (Beachten Sie, dass mein dnx immer noch über die Paketmanagerkonsole funktioniert und ich kein separates CMD-Fenster öffnen möchte, um Migrationen durchzuführen.)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Dadurch werden ein Modellschnappschuss und eine erste Migration im Migrations
Ordner für erstellt ContextAContext
. Es wird ein Ordner mit dem Namen erstelltContextB
, der diese Dateien für enthältContextBContext
Ich habe manuell einen ContextA
Ordner hinzugefügt und die Migrationsdateien aus ContextAContext
diesem Ordner verschoben . Dann habe ich den Namespace in diesen Dateien umbenannt (Snapshot-Datei, anfängliche Migration und beachten Sie, dass sich unter der anfänglichen Migrationsdatei eine dritte Datei befindet ... designer.cs). Ich musste .ContextA
dem Namespace etwas hinzufügen , und von dort aus behandelt das Framework es automatisch wieder.
Mit den folgenden Befehlen wird für jeden Kontext eine neue Migration erstellt
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
und die generierten Dateien werden in den richtigen Ordnern abgelegt.