私はEFに新たなんだので、私は、私はちょうど私が唯一のフィルタリングされたデータをロードする代わりにするEFを制限することができます最善の方法であるかを知りたい4.2を使用している今、少し穏やかなdbからすべてのデータを取り出し、その上にフィルタを適用します。EF DbContext.Set <T>フィルタ記録のみ
DbContext.Set()またはDbContext.Set()が表示されます。AsQueryable();つまり、「Where」機能についてはわかりませんが、同じ原則で動作しているようです(つまり、指定されたテーブルのデータをすべて読み込んでからフィルタを適用してもパフォーマンスが大幅に低下しません)。または私はここに何かを逃していますか?私はEFがテーブルからすべてのデータをフェッチするのではなく、フィルタリングしたデータのみをフェッチすることを望んでいます。それについてどうやって行くの?クエリに().Whereを使用している場合、それはあなたのアプリケーションではないDBサイト上で実行する必要がありますので
おかげ
LINQクエリをSQLに変換されているフィルタ。 .ToList()/ .ToArray()のような処理を行い、その上に.Where()を適用すると、フィルタリングはクライアントサイトで行われます.ToList()は、フィルタ。 – Pawel
@Pawel IQueryable query = _context.Set(); (filter!= null) }; //すべてのデータがすでに読み込まれているところです。だから私は_context.Set ().Where(フィルタ);そうすれば十分でしょうか? –
afr0
それをクリアするための@Pawelありがとう私はちょうどあなたが言ったようにwhere句を追加するSQLプロファイラを確認します。答えに印を付けることができませんでした。 歓声 – afr0