[英]What does Composable exactly mean?
我目前正在阅读Larry Tenny和Zeeshan Hirani撰写的EF4食谱。 在阅读这本书的过程中,我偶然发现了“可组合”这个词,并对这个词的含义有了一般意义,但没有确切的定义。
我想知道确切的定义是什么,以及是什么使(比如说)功能“可组合”?
有关更多上下文,请查看此常见问题解答 (在页面上查找单词“可组合”,只有一个),这与本书中的相同上下文非常相似。
这是一个段落,我对它的含义感到困惑(来自书页397):
模型定义函数的参数不显示方向。 没有'out'参数,只隐含'in'参数。 原因是模型定义的函数是可组合的 ,可以用作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受到更多限制。 您可以投影,也可以订购,但不能订购投影。 所以上面的代码不起作用,虽然它可以调整和重新订购工作。
它指的是称为模型定义函数的东西。
基本上,您在EDMX中定义这些MDF,然后您可以在LINQ语句中“组合”这些查询。
例如,假设您的数据库中有一个标量UDF,它返回了一个人的年龄,那么您可以将其映射到概念模型中并执行以下操作:
var results = from person in ctx.People
where GetAge(person) > 35 // GetAge is a UDF mapped in your EDMX
select person;
有一个文章在这里这也解释了它多一点。
我没有太多使用它们 - 但我相信它有一些限制(例如你不能使用表值函数,只能使用标量)。
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.