コードファーストアプローチでEntityFramework5を使用しており、エンティティ構成にFluentAPIを使用しています。私のプロジェクトには、データベースからデータの半分を取得し、WCFクライアント(製品在庫の管理に使用されるサードパーティシステム)を介して取得したデータコントラクトから残りの半分を取得する特定の製品エンティティがあります。データコントラクトは、Product Entityクラスのメンバーです(プロパティまたはメソッドはまだ決定していません)。
エンティティ内にWCFクライアントロジックを含めたくない。このロジックをリポジトリコード(DbContext、DbSetなど)に保持したいと思います。
では、Product Entityがデータベースから取得された直後にEntityFrameworkにフックする(またはインターセプトする)手法はありますか?製品エンティティは他のエンティティのナビゲーションプロパティとして表示されることに注意してください。フックまたはインターセプトが可能である場合、それは、EFがデータベースから製品エンティティをロードした直後にSOAPサービスからデータコントラクトを取得できることを意味します。私のプロジェクトの利点は、アプリケーション全体でWCFクライアント取得コードを繰り返す必要がないことです。
私が持っていたアイデアの1つは、データコントラクトにIDbSetを実装することであり、IDbSetがそれを取得する責任があります。そして、どういうわけかEFをだまして、ProductEntityのナビゲーションプロパティを考えさせます。しかし、データベースのDbSetをデータベース以外のIDbSetとすべて同じDbContext内で混在させることができるかどうかはわかりませんでした。また、他の質問-EFはIDbSet埋め込みからナビゲーションプロパティを取得することをどのように知るのでしょうか?時間をかける前に、このアイデアが可能かどうかを知りたいと思います。また、どこから探し始めるかを知りたいです。
私は.NETを10年以上使用していますが、このEF5のものはまだ比較的新しいものであることに注意してください。
前もって感謝します。
-サム