假设我有以下代码(我知道可以很容易地对其进行修改以获得更好的性能,但它说明了我想要做什么)
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);
并且知道它从模式中知道什么,它会将整体查询减少到最佳版本并执行该版本并将读取结果放入数组中。
我希望我已经准确地描述了我正在寻找的东西,更重要的是它存在。如果我听起来像一个漫无边际的疯子,让我们假装这个问题从未存在过。