2013-02-06 14 views
0

我有一個WCF數據服務(OData V3),它具有100個項目(針對所有實體)的頁面限制。獲取OData中的子集合的下一頁(WCF數據服務)

通常情況下,如果我需要超出該限制,就不會出現問題,因爲我可以使用內置分頁來獲得下一頁結果。

但是,我看不到任何內置到「子結果」中的分頁。我非常需要這個!

讓我用一個例子的數據結構,是一個訂單列表說明:

List<Order> Orders 
    | 
    Order #1:--- 
    |  | 
    |  |-- Customer 
    |  |-- List<Item> ItemsOrdered 
    |    | -- Wigdet Type 1 
    |    | -- Wigdet Type 2 
    |    | -- Wigdet Type 3 
    |    | -- Wigdet Type 4 
    |    | -- Wigdet Type 5 
    |    | -- Wigdet Type 6 
    |    | -- Wigdet Type 7 
    | 
    Order #2:- 
      | 
      |-- Customer 
      |-- List<Item> ItemsOrdered 
        | -- Wigdet Type 8 
        | -- Wigdet Type 4 
        | -- Wigdet Type 2 

如果我的網頁限制設置爲5,那麼我可以看到沒有辦法查詢ItemsOrdered列表的其餘部分。

有沒有辦法在OData中的「子列表」上做延續?

回答

1

在協議級別上,內部提要(或集合)將包含下一個鏈接,就像頂級鏈接一樣。因此,您只需向下一個鏈接發出一個GET(它將繼續枚舉該擴展實體的實體,右邊的內容將在下一個鏈接中編碼)。

如果您使用的是WCF DS客戶端庫,則需要確保展開屬性的類型爲DataServiceCollection。因此,在您的情況下,ItemsOrdered屬性的客戶端類型應該是DataServiceCollection(請注意,這隻在客戶端上需要,與在服務器上如何建模數據無關)。

一旦你有了DataServiceCollection有一個Continuation屬性,它是下一個鏈接的表示。要發出加載更多請求,最方便的方法是調用context.LoadProperty(orderInstance,「ItemsOrdered」,orderInstance.ItemsOrdered.Continuation);