2011-12-14 95 views
2

我的問題是關於如何處理使用WCF數據服務的尋呼。我想要使​​用它的方式是執行一個查詢(傳遞頁面大小和當前頁面),並獲取該查詢的結果以及頁面總數,當前頁碼和頁面大小等分頁信息。客戶端(這是將結果轉換爲JSON的另一種服務,用於消耗它的移動應用程序)使用此分頁信息來處理下一個/上一個按鈕。使用WCF數據服務尋呼

但是,在WCF數據服務上使用LINQ太有限了,它不支持我需要的LINQ表達式。

我嘗試在WCF 數據服務中創建服務操作,但是我只能返回IQueryable數據實體集合,所以我無法返回也包含分頁信息的自定義實體。

有沒有辦法爲WCF數據服務實現分頁,這樣我旁邊的結果我也得到分頁信息?

編輯:由於WCF數據服務的限制,我切換到正常的WCF服務。說實話,我不明白爲什麼有人會想要在這些嚴格的限制下使用數據服務!

+4

對不起,我錯過了**數據**部分的問題。 WCF **數據**服務是可怕的限制。這是一個RESTful服務,因此您可以在URL中傳遞頁面和頁面大小信息。如果你使用它,以便你可以寫LINQ查詢 - 祝你好運。 WCF數據服務是OData的一個實現,它對如何格式化查詢提出了限制。在你實際控制方法調用的地方編寫WCF服務會更好。 – Yuck 2011-12-14 11:40:26

+2

我很害怕這會是答案: - /好吧,謝謝你... – 2011-12-14 11:43:00

回答

3

遺憾的是,似乎WCF數據服務是太有限,而對我來說,解決辦法是切換到普通WCF服務,使我可以使用完整的LINQ並自己定義數據合同。

2

使用SkipTake執行從WCF數據服務數據,如客戶端分頁:

var items = (from i in ctx.MyEntities 
      select i).Skip(StartIndex).Take(PageSize) 

開始索引是你想要返回的數據的起始位置和每頁是要返回的元素數量。