私は同じ問題にぶつかっただけで、次の解決策を使用しました(すべてPackage Manager Consoleから)
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
ファイルの名前を変更する必要があります。そうしないと、ファイルが2つあることに不満があります。ファイルの名前をConfigA.cs
およびに変更しましたConfigB.cs
編集:(提供: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つのコマンドは、対応するデータベースに正しい移行を適用します。
EDIT 08 Feb、2016:
EF7バージョン7.0.0-rc1-16348で少しテストを行いました
-o | --outputDirオプションを機能させることができませんでした。それは与え続けたMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
ただし、マイグレーションが初めて追加されたときは、Migrationsフォルダーに追加され、その後の別のコンテキストのマイグレーションは自動的にマイグレーションのサブドルダーに入れられます。
元の名前ContextA
はいくつかの命名規則に違反しているようですので、とを使用ContextAContext
しContextBContext
ます。これらの名前を使用すると、次のコマンドを使用できます(私のdnxは引き続きパッケージマネージャーコンソールから機能し、移行を行うために別のCMDウィンドウを開くのは好きではないことに注意してください)。
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"
生成されたファイルは正しいフォルダに配置されます。