Entity Frameworkと遅延読み込みを使用して依存性注入を実装する方法はありますか?
にフックしているときにメソッドを認識していますがObjectStateManagerChanged
、代わりにコンストラクターインジェクションを使用し、モデルエンティティがIOCコンテナーを認識しないようにします。(BLLとDALを分離し、外部依存関係を最小限に抑えてBLLを維持したいとします)。
ありがとうございました。
Entity Frameworkと遅延読み込みを使用して依存性注入を実装する方法はありますか?
にフックしているときにメソッドを認識していますがObjectStateManagerChanged
、代わりにコンストラクターインジェクションを使用し、モデルエンティティがIOCコンテナーを認識しないようにします。(BLLとDALを分離し、外部依存関係を最小限に抑えてBLLを維持したいとします)。
ありがとうございました。
エンティティで依存性注入を完全に使用しないようにします。たとえば、このSOの質問を見てください。
コマンド/ハンドラーパターンを使用して、ビジネスオペレーションを記述してみてください。1つの汎用インターフェースを定義することにより、単純なデコレーターを実装することにより、優れた拡張性とセキュリティチェックを実装する能力が得られます。
UI開発者がアクセスしてはならないデータにアクセスできないようにするには、コマンドハンドラー(およびクエリハンドラー)をラップする1つ(または複数)のデコレーターを作成し、ビジネスレイヤーから遅延読み込み機能を持つエンティティを返さないようにします。代わりにDTOを返します。このようにして、ビジネスレイヤーが完全に制御できます。
EFでコンストラクタインジェクションを使用することはできません。EFは、データベースレコードからエンティティを実体化するときに、常にデフォルトのコンストラクターを使用します。この場合の唯一のオプションは、エンティティObjectMaterialized
のイベントをObjectContext
使用し、プロパティを使用して初期化データを渡すことです。
必要なロジックを実装するには、@Stevenのコメントに従う必要があります。