2013-02-06 3 views
0

페이지 제한이 100 개 (모든 항목에 대한) 인 WCF 데이터 서비스 (OData V3)가 있습니다.OData에서 하위 컬렉션의 다음 페이지 가져 오기 (WCF 데이터 서비스)

일반적으로 그 한계를 넘어 설 필요가있는 경우, 내장 된 페이징을 사용하여 결과의 ​​다음 페이지를 얻을 수 있으므로 문제가 없습니다.

그러나 "하위 결과"에 내장 된 모든 페이징을 볼 수 없습니다. 그리고 나는 그것을 나쁘게 필요로한다!

내 페이지 제한이 5로 설정되어
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 

경우, 나는 ItemsOrdered 목록의 나머지를 조회 할 수있는 방법을 볼 수 있습니다

날 주문의 목록입니다 예를 들어 데이터 구조를 설명하겠습니다.

OData의 "하위 목록"에서 계속 작업 할 수 있습니까?

답변

1

내부 수준의 피드 (또는 컬렉션)에는 최상위 레벨 피드와 마찬가지로 다음 링크가 포함됩니다. 그래서 당신이해야 할 일은 그 다음 링크에 대한 GET을 발행하는 것입니다 (확장 된 엔티티에 대한 엔티티를 계속 열거하고, 오른쪽 엔티티는 다음 링크에 엔코 드됩니다).

WCF DS 클라이언트 라이브러리를 사용하는 경우 확장 속성 유형이 DataServiceCollection인지 확인해야합니다. 따라서 귀하의 경우 ItemsOrdered 속성에 대한 클라이언트 측 형식은 DataServiceCollection이어야합니다 (클라이언트에서만 필요하며 서버에서 데이터가 모델링되는 방식과 아무 관련이 없음을 유의하십시오).

일단 DataServiceCollection에 다음 링크를 나타내는 Continuation 속성이 있으면 더 많이로드하는 요청을 내리려면 가장 편리한 방법은 context.LoadProperty (orderInstance, "ItemsOrdered", orderInstance.ItemsOrdered.Continuation)를 호출하는 것입니다.