次のコードがあるとしましょう(パフォーマンスを向上させるために簡単に変更できることはわかっていますが、それは私がやりたいことを示しています)
List<Query> l = new List<Query>;
// Query is a class that doesn't exist, it represents an EF operation
foreach (var x in Xs)
{
Query o = { context.someEntity.Where(s=>s.Id==x.Id).First();}
// It wouldn't execute it, this is pseudo code for delegate/anonymous function
l.Add(o)
}
次に、このクエリのリストをEFに送信し、可能な限り最小のラウンドトリップを実行するように最適化します。それをBatchOptimizeAndRunと呼びましょう。あなたは言うだろう
var results = BatchOptimizeAndRun(l);
そして、スキーマから何を知っているかを知ることで、クエリ全体を最適なバージョンに減らし、それを実行して、読み取った結果を配列に配置します。
私が探しているものを正確に、そしてもっと重要なことに、それが存在することを説明したことを願っています。そして、私がとりとめのない狂った男のように聞こえるなら、この質問が決して存在しなかったふりをしましょう。