C# 在OData(WCF数据服务)中获取子集合的下一页

C# 在OData(WCF数据服务)中获取子集合的下一页,c#,.net,wcf-data-services,odata,page-size,C#,.net,Wcf Data Services,Odata,Page Size,我有一个WCF数据服务(ODataV3),页面限制为100个项目(对于所有实体) 通常,如果我需要超出这个限制,就没有问题了,因为我可以使用内置分页来获得下一页的结果 但是,我看不到“子结果”中内置的任何分页。我非常需要它 让我用一个示例数据结构(订单列表)来说明: List<Order> Orders | Order #1:--- | | | |-- Customer | |-- List<Item

我有一个WCF数据服务(ODataV3),页面限制为100个项目(对于所有实体)

通常,如果我需要超出这个限制,就没有问题了,因为我可以使用内置分页来获得下一页的结果

但是,我看不到“子结果”中内置的任何分页。我非常需要它

让我用一个示例数据结构(订单列表)来说明:

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
列出订单
|
订单#1:---
|        |
||——顾客
||--排序的列表项
||--Wigdet类型1
||--Wigdet类型2
||--Wigdet类型3
||--Wigdet类型4
||--Wigdet类型5
||--Wigdet 6型
||--Wigdet 7型
| 
订单#2:-
|
|--顾客
|--排序的项目列表
|--Wigdet类型8
|--Wigdet类型4
|--Wigdet类型2
如果我的页面限制设置为5,则无法查询ItemsOrdered列表的其余部分


有没有办法在OData中的“子列表”上继续?

在协议级别,内部提要(或集合)将包含下一个链接,就像顶级链接一样。因此,您所需要做的就是发出一个到下一个链接的GET(它将继续枚举该扩展实体的实体,正确的内容将在下一个链接中编码)

如果使用WCF DS客户端库,则需要确保扩展属性的类型为DataServiceCollection。因此,在您的情况下,ItemsOrdered属性的客户端类型应该是DataServiceCollection(注意,这仅在客户端是必需的,与数据在服务器上的建模方式无关)

一旦确定DataServiceCollection有一个Continuation属性,该属性表示下一个链接。要发出加载更多的请求,最方便的方法是调用context.LoadProperty(orderInstance,“ItemsOrdered”,orderInstance.ItemsOrdered.Continuation)