同じ問題に遭遇したばかりで、次の解決策を使用しました(すべてパッケージマネージャーコンソールから)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
これにより、Migrations フォルダーに 2 つの個別のフォルダーが作成されます。それぞれに生成されたConfiguration.cs
ファイルが含まれます。残念なことに、これらのConfiguration.cs
ファイルの名前を変更する必要があります。ファイルの名前をConfigA.cs
andに変更しましたConfigB.cs
EDIT : (Kevin McPheat の厚意による) Configuration.cs ファイルの名前を変更するときは、クラス名とコンストラクターの名前も変更することを忘れないでください/EDIT
この構造を使用すると、簡単に行うことができます
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
これにより、構成ファイルの隣のフォルダー内に移行用のコード ファイルが作成されます (これらのファイルをまとめておくと便利です)。
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
最後になりましたが、これら 2 つのコマンドは、対応するデータベースに正しい移行を適用します。
編集 2016 年 2 月 8 日:
EF7 バージョン 7.0.0-rc1-16348 で少しテストを行いました
-o|--outputDir オプションを機能させることができませんでした。与え続けたMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
ただし、移行が初めて追加されると、移行フォルダーに追加され、別のコンテキストの後続の移行が自動的に移行のサブドルダーに配置されるように見えます。
元の名前ContextA
はいくつかの命名規則に違反しているように見えるので、現在はContextAContext
andを使用していContextBContext
ます。これらの名前を使用すると、次のコマンドを使用できます。
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
これにより、モデルのスナップショットと初期移行が のMigrations
フォルダに作成されますContextAContext
。ContextB
これらのファイルを含むという名前のフォルダーを作成しますContextBContext
フォルダーを手動で追加しContextA
、移行ファイルContextAContext
をそのフォルダーに移動しました。次に、これらのファイル内の名前空間の名前を変更しました (スナップショット ファイル、最初の移行、および最初の移行ファイルの下に 3 番目のファイルがあることに注意してください... designer.cs)。名前空間に追加.ContextA
する必要があり、そこからフレームワークが再び自動的に処理します。
次のコマンドを使用すると、コンテキストごとに新しい移行が作成されます
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
生成されたファイルは正しいフォルダーに配置されます。