2

手動移行で EF Code First を使用しています (AutomaticMigrationsEnabled = false;)。問題は、2 つのプロジェクト間で 1 つのデータベースを共有する必要があることです。

Project-A
---DbContext-A
---------Model1
---------Model2
---------Model3

Project-B
---DbContext-A
---------Model2
---------Model3
---------Model4

一部の移行ファイルは同じですが、一部は異なります。例: Project-B には Model4 が必要ですが、Project-A には必要ありません。

現在、1 回の移行でデータベースを更新すると、他のプロジェクトで DbContext が機能しなくなります。

このシナリオを処理する最善の方法は何ですか?

4

1 に答える 1

4

私の感じでは、これは移行の意図に反しています。DbContext、エンティティ、および移行を、2 つのプロジェクト間で共有される別のアセンブリに分割する必要があると思います。

それができない場合は、モデルとの互換性チェックを無効にする必要があります。互換性チェックはIDBInitializer.InitializeDatabase、 の呼び出しを担当する実装の一部として行われるDatabase.CompatibleWithModelため、何もしない独自のカスタム DB Initializer を作成すると、そのステップを通過できます。これは、データベースがモデルと互換性があることを確認する責任を引き継ぐことも意味します。EF はこれ以上お手伝いできません。

于 2012-05-26T18:57:25.087 に答える