わかりました、私はこれに1日苦労してきました。ここに答えを求める人のための解決策があります...
多くの DbSet<> プロパティを持つ大きな DbContext クラスがあり、読み込みに時間がかかるため、この投稿を読んでいるほとんどの人がここにいると思います。一度にすべての dbset を使用するわけではなく、必要な状況に基づいて「部分的な」コンテキストのみをロードするため、コンテキストを分割する必要があると考えたことでしょう。それ。したがって、それらを分割すると、Code First の移行が革命的な考え方をサポートしていないことがわかります。
したがって、最初のステップはコンテキストを分割することだったに違いありません。次に、新しいコンテキストごとに MigrationConfiguration クラスを追加し、新しい Context クラスとまったく同じ名前の接続文字列を追加しました。
次に、Add-Migration Context1 を実行してから Update-Database -Verbose... を実行して、新しく分割されたコンテキストを 1 つずつ実行しようとしました。
すべてが正常に機能しているように見えましたが、その後のすべての移行で、前回の移行からすべてのテーブルが削除され、最後の移行からのテーブルのみが残っていることに気付きました。
これは、現在の移行モデルがデータベースごとに単一の DbContext を想定しており、ミラー マッチである必要があるためです。
私が試したこと、そして誰かがここでそれを提案したことは、すべての Db セットを含む単一の SuperContext を作成することです。単一の移行構成クラスを作成し、それを実行します。部分的な Context クラスをそのままにして、インスタンス化して使用してみてください。EF は、バッキング モデルが変更されたと不平を言っています。繰り返しますが、これは、EF が部分的な dbcontext を、スーパー コンテキストの移行で残された All-Sets コンテキスト シグネチャと比較するためです。
これは私の意見では大きな欠陥です。
私の場合、移行よりもパフォーマンスの方が重要であると判断しました。だから、私がやったのは、スーパーコンテキストで実行してすべてのテーブルを配置した後、データベースに入り、_MigrationHistory テーブルを手動で削除したことです。
これで、EF から文句を言われることなく、部分コンテキストをインスタンス化して使用できるようになりました。MigrationHistory テーブルが見つからず、先に進むだけなので、データベースの「部分的な」ビューを表示できます。
もちろんトレードオフは、モデルへの変更を手動でデータベースに反映する必要があることです。そのため、注意が必要です。
それは私のために働いた。