我目前正在阅读 Larry Tenny 和 Zeeshan Hirani 所著的《EF4 Recipes》一书。在阅读这本书的过程中,我经常遇到“可组合”这个词,并且对该词的含义有一个大致的了解,但没有确切的定义。
我想知道确切的定义是什么,以及什么使(例如)函数“可组合”或不?
有关更多上下文,请查看此常见问题解答(在页面上查找“可组合”一词,只有一个),它与书中的相同上下文非常相似..
这是一段我对其含义感到困惑的段落(来自本书第 397 页):
模型参数定义 函数不显示方向。那里 没有“out”参数,只是隐含的 “输入”参数。这样做的原因 模型定义的函数是 可组合并且可以用作 LINQ 查询。这可以防止他们 返回输出参数中的值。
从这个意义上来说,可组合性意味着您可以进一步细化查询。
EF 查询非常可组合。所以你可以查询并更改它:
var q = Context.MyStuff;
q = q.Where(s => s.IsGood);
var r = from s in q select new { Id = s.Id, Description = s.Description };
r = r.OrderBy(s => s.Description);
r = r.Take(100);
所有这些工作都将在数据库服务器上完成,因为最终查询是由其各部分组成的,在上面的代码中构建。 WCF 数据服务、OTOH 的限制要大得多。你可以投影,也可以订购,但不能在投影上订购。因此,上面的代码将无法工作,尽管可以对其进行调整和重新排序以使其工作。