我目前正在阅读Larry Tenny和Zeeshan Hirani撰写的EF4食谱。在阅读这本书的过程中,我偶然发现了“可组合”这个词。我对这个词的含义有一般意义,但没有确切的定义。
我想知道确切的定义是什么,&是什么使(比如说)功能“可以合成”?
有关更多上下文,请检查此FAQ(在页面上查找单词“可组合”,只有一个),这与书中的相同上下文非常相似..
这是一个段落,我对它的含义感到困惑(来自第397页):
定义模型的参数 功能不显示方向。那里 没有'出'参数,只暗示 'in'参数。原因就在于此 是模型定义的函数是什么 可组合,可以作为其中的一部分使用 LINQ查询。这可以防止他们 返回输出参数中的值。
答案 0 :(得分:6)
从这个意义上讲,可组合性意味着您可以进一步优化查询。
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受到更多限制。您可以投影,也可以订购,但不能订购投影。所以上面的代码不起作用,虽然可以调整并重新命令工作。
答案 1 :(得分:2)
它指的是一种叫做模型定义函数的东西。
基本上,您在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;
有一篇文章here可以解释一下。
我没有太多使用它们 - 但我相信它有一些限制(例如你不能使用Table-Value函数,只能使用Scalar)。
HTH