質問: 私はこの種の手順を何度も成功させましたが、初めて、それはうまくいかないようです。私は自分のアプリケーションの2つのブランチをマージしたい、彼らは異なるコードの最初の移行状態を持っています。私は、2つのバージョンの開発中に両方のスキーマが変更され、異なるスナップショットが作成されたことに気付いています。 このガイドのオプション2に従って 、データベースのスナップショットと一致するようにマージされた移行を再構築する必要があります。与えられたプロジェクトでは、私は数十の移行を持っていて、それらのうちの複数が合併され、説明されているように首尾よく再足場を作りました。 ですから、私がやっていることは、移行の前にデータベースの状態をデータベースのバージョンにすることです(例えば、 `Update-Database -targetMigration 201511261243087_BeforeMigration` 、ガイドのステップ4)、マージされた移行を正しい順序で再構築して、メタデータ コマンド`Add-Migration 201512170931290_FirstMergedMigration`を使用すると、次のエラーメッセージが表示されます。 > 次の明示的な移行が保留中であるため、明示的な移行を生成できません:[201512170931290_FirstMergedMigration、201512140935307_SecondMergedMigration]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用してください。 > > 何?私はこれを期待していませんでした。私はコマンドが既存の移行のメタデータを再構築し、スキーマスナップショットを更新することを期待しています。しかし、私は新しいMigrationを追加したいと思っています。 `-force`フラグは役に立ちません。 推奨される手順と`Update-Database`に従うと、EFは`201512210931290_201512170931290_FirstMergedMigration`という新しい移行を作成します。今それは本当に夢中です。 私はRe-Scaffoldメタデータへの別のコマンドがあることを願っていますので、より明確なエラーメッセージが表示される可能性があります。 誰もこれを前に見た? ### 更新: 私自身の答えを見てください。
回答: それで、ここで問題が見つかったようです...インデックスを追加するだけだったので、私は再スキャフォールドしようとしましたが、スキーマの変更は一切ありませんでした。それはEFが指定された移行の変更が検出されない場合は、新しい移行です。私ができることは、その移行をスキップして、次の作業を続行することでした。その結果、期待通りの結果が得られました。 > マイグレーションのためのデザイナーコード '201512140935307_SecondMergedMigration'のみが再スキャフォールドされました。移行全体を再構築するには、-Forceパラメータを使用します。 > > 私はデータベースをチェックし、 `__MigrationHistory`はよく見えるので、テーブルを実行します。私が明らかに再踏み台にしようとしていた場所に新しい移行を追加しようとするのではなく、EFがより良いエラーメッセージを生成したならば、それは問題を少なくします。