簡體   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