0

EF 4 STE パブリック ゲッターとセッターでカスタム ロジックを実行する必要があります。ただし、EF が現在エンティティをハイドレートしていない場合にのみ、このカスタム ロジックを実行したいと考えています。

EF が現在、私の代わりに STE エンティティにハイドレートを行っているかどうかを判断するためにチェックできる、組み込みのフラグ、ステータス、またはオブジェクトの状態はありますか?

私は遅延読み込みを行っていないので、すべてのデータ読み込みを 1 回で実行します。エンティティ T4 テンプレートを変更してインフラストラクチャを追加し、このようなものを自分で追跡する必要がないことを願っています。

ありがとう、ネイト

4

1 に答える 1

0

いいえ、そのようなフラグはありませんが、次の方法で試すことができます。

  • メソッド SavingStarted、SavingFinished を使用して、すべての STE のインターフェースを定義します。
  • これらのメソッドを STE テンプレートに実装して、フラグのオンとオフを切り替えられるようにします
  • STE テンプレートのゲッターとセッターの定義を変更して、フラグを操作できるようにします
  • ObjectContext で SaveChanges をオーバーライドします。
  • インターフェイスに変換可能な変更されたエンティティを反復処理し、SavingStarted を呼び出します
  • base.SaveChanges を呼び出します
  • そのエンティティを再度繰り返し、SavingFinished を呼び出します

唯一の問題は、これらのメソッドが STE のパブリック インターフェイスの一部になることです。これを回避するには、これらのメソッドを ObjectContext に実装し、フラグを使用して STE の内部プロパティにアクセスします。これは、STE と ObjectContext が同じアセンブリ内にあるか、InternalsVisibleTo が使用されている場合にのみ可能です。

于 2011-01-11T09:23:36.357 に答える