4

このアプリケーションには、同じアプリケーションデータベースへの2つのコンテキストがあります。各コンテキストは、関心の分離全体に明確に分割されています。

Context1とContext2の2つのコンテキストがあり、Context2のクラスのみを変更した場合、EF5.0はContext1も変更されたと見なしているようです。これはEF5.0を混乱させるようであり、両方で移行をトリガーするようです。その誤った検出の後、結果として生じる移行も一貫性がありません。それと私たち自身の監視のために私たちは奇妙な行き止まりにあり、おそらくデータベース全体をもう一度再構築する必要があります:((アップパスとダウンパスは一貫していません)

だから、質問:

  1. EF 5.0は、複数のコンテキストのモデル変更の検出と移行をサポートしていますか?ここで質問する前に、このEF4.3スタックオーバーフローの質問RowanによるこのMSFTの投稿を読みました。EF 4.3 => EF 5.0の改善はコードファーストと移行を対象としているため、これは繰り返されないと思います。
  2. そうでない場合、皆さん(MSFT / Rowan!)はいつそれをサポートする予定ですか?

どうも

背景ストーリーの詳細(スキップできます):

コードファーストの流暢なAPIを使用して、両方の「スキーマ」を慎重に設定し、テストデータを追加してテストし、「ライブ」(アルファステージ)データを追加しました。Context1には重要な「ライブ」情報が含まれているため、そのままにしておきcontext2、コードのファーストクラスに新しいメンバーを追加して2番目のコンテキスト(ここ)を変更しました(db用語ではテーブルの新しい列)。アプリを実行したところ、両方が変更されたことが検出されたようです。最後に、変更されていないContext1は呼び出されないと考えて、起動 Database.SetInitializer<Context1>(new DropCreateDatabaseIfModelChanges<Context1>());時に追加したコメントはコメントしませんでした。それで、それは私たちの重要な今成長したテーブルを一掃しました!はい、クラス定義をロックダウンするだけでは不十分だったので、それを削除する必要がありました。

4

1 に答える 1

4

単一のデータベースへの複数のコンテキストはまだうまく機能しませんが、簡単な回避策があるはずです。移行以外のアプリケーションロジックでは使用されないコンテキストをもう1つ作成します。他のコンテキストからのすべてのエンティティのエンティティマッピングを、データベースの作成/移行に使用されるこの中央コンテキストに追加します。

ところで。EFはオープンソースであるため、自分で複数のコンテキストのサポートに貢献したり追加したりできます。

于 2012-08-04T22:05:50.257 に答える