私はまだEF(v4.1)にかなり慣れていないので、間違っている場合は修正してください。ただし、次のようにInversePropertyがある場合:
public virtual ICollection<ItemComment> Comments { get; set; }
プロパティがアクセスされると、これは遅延ロードされます。ただし、このリストをフィルター処理する場合 (たとえば、アクティブなコメントのみを取得する場合) は、次のように別のプロパティを追加するだけです。
public IEnumerable<ItemComment> ActiveComments {
get { return Comments.Where(x => x.IsActive); }
}
ただし、これは最初に Comments コレクション全体をロードしてから、正しくフィルタリングしますか? では、IQueryable を使用していませんか? パフォーマンスのために、理想的には IQueryable を使用してリストを取得したいと考えています。
だから私の質問は、これはこのようなエンティティのプロパティを使用して行うことができますか? それとも、ItemComments の where を直接実行する必要がありますか?
var comments = itemCommentRepository.QueryAll()
.Where(x => x.IsActive && x.ItemId == XX).
これは明らかに機能します...しかし、今後はもっと良い解決策があるのでしょうか?
更新: 結果セット全体がロードされているようで、フィルタリングはデータセット全体のクライアント側で行われます。ハッキング、またはエンティティを変更してコンテキストを渡す (うん!) 以外に、組み込みの方法はないようです。@Slauma の応答を回答としてマークしました。