私は、別のオブジェクトのコレクションであるプロパティを持つオブジェクトを持っています。私はLINQを使用してコレクションプロパティのサブセットをロードしたいと思います。スキップを使用してLINQを取り込む
は、ここで私はそれをやろうとしている方法は次のとおりです。
manager = db.Managers
.Include(m => m.Transactions.Skip((page - 1) * 10).Take(10))
.Where(m => m.Id == id)
.FirstOrDefault();
上記のコードは、インクルードパス式はタイプに定義されたナビゲーションプロパティを参照する必要があります
を言うエラーがスローされます。参照ナビゲーションプロパティには点線のパスを使用し、コレクションナビゲーションプロパティにはSelect演算子を使用してください。\ r \ nパラメータ名:パス
LINQでこれを行う正しい方法は何ですか?前もって感謝します。
平均して、特定のマネージャーには多くのトランザクションがありますか?言い換えれば、パフォーマンスにどのように関心がありますか?それほど多くない場合、あなたは熱心な読み込みをしてから、SkipとTakeで通常のフィルタ処理をすることができます。 –
@BrunoSaboia応答をありがとう。はい。マネージャーは多くのトランザクションを持つことができます。すべてのトランザクションをロードすると、アプリケーションが遅くなる可能性があります。私はすでに熱心なローディングを使用していると信じていますが、私は "スキップしてフィルタリングして正常に取る"ことについてはあまりよく分かりません。どのように私はそれを正確に行うのですか? – Rian
Rian、あなたは熱心な読み込みを使用していません、あなたは遅延読み込みを使用しています。熱心なローディングは、特定のマネージャーのすべてのトランザクションをロードします。私はマネージャーごとにたくさんのトランザクションを持っているので、熱心な負荷を使いたくないと思うかもしれません。私はあなたのニーズを尊重し、ここに戻ってくる解決策を考えていきます。 –