我試圖找出一種方式來獲取額外的數據與從RIA域服務返回的實體傳遞。傳遞計算值與RIA服務
例如,假設我想爲「訂單」顯示DataGrid,並在訂單中包含總項目的列。
Order Num. | Cust. Name | *No. of Items Ordered*
4545 | John | 4
1234 | Mike | 7
在服務器端,有一個LINQ查詢,我可以這樣做:
var query =
from o in entities.Orders
select new OrderWithItemCount { Order = o, ItemCount = o.Items.Count() };
...這會找回我的訂單隨着項目的所有一氣呵成計數。
問題是,我無法找到將這些結果通過域服務傳播到Silverlight客戶端。我想我可以使用標準的WCF服務,但那有什麼好玩的?
更新
什麼竟然是實際的問題...
我在一個點實際上已經已經嘗試了「簡單的方法」,日產風扇和弗洛裏安林點出。當我嘗試時,我沒有得到所有的數據。 (我還需要在查詢中包含客戶Person
以獲取他們的名字。)事實證明,我認爲RIA Services的限制實際上是EF 4.0的限制,因爲如果選擇entities.Orders.Include("Customer")
,則說明entities.Orders.Include("Customer")
不起作用一種不是Order
的新類型。解決方法是在你的select語句中明確選擇o.Customer
,EF將自動將選定的人員連接到Order
的assiocated屬性。
我不知道你可以定義一個新實體並以這種方式使用它,謝謝! – grimus 2011-03-18 15:00:24
我要爲代碼提交編輯,很樂意標記爲答案。 – grimus 2011-03-18 15:01:17
創建一個全新的實體來實現這一點當然是可選的,但只需將屬性添加到由域服務代理創建的部分類中,或者將它作爲部分類添加到您的LINQ中,即可更快地到達預期的目的地SQL/EF。見下文。 – 2011-03-18 17:29:51