繁体   English   中英

Composable究竟意味着什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM