0

(すべてのエンティティに対して)100アイテムのページ制限があるWCFデータサービス(OData V3)があります。

通常、その制限を超える必要がある場合は、組み込みのページングを使用して次のページの結果を取得できるため、問題はありません。

ただし、「サブ結果」に組み込まれているページングは​​表示されません。そして、私はそれがひどく必要です!

注文のリストであるデータ構造の例で説明しましょう。

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の「サブリスト」で継続を行う方法はありますか?

4

1 に答える 1

1

プロトコル レベルでは、最上位のリンクと同様に、内側のフィード (またはコレクション) に次のリンクが含まれます。したがって、その次のリンクに対して GET を発行するだけで済みます (展開されたエンティティのエンティティを引き続き列挙し、正しいものが次のリンクにエンコードされます)。

WCF DS クライアント ライブラリを使用している場合は、展開されたプロパティの型が DataServiceCollection であることを確認する必要があります。したがって、あなたの場合、ItemsOrdered プロパティのクライアント側の型は DataServiceCollection である必要があります (これはクライアントでのみ必要であり、サーバーでデータがモデル化される方法とは関係ないことに注意してください)。

DataServiceCollection に、次のリンクの表現である Continuation プロパティがあることがわかりました。さらに読み込むリクエストを発行するには、context.LoadProperty(orderInstance, "ItemsOrdered", orderInstance.ItemsOrdered.Continuation); を呼び出すのが最も便利な方法です。

于 2013-02-07T10:18:50.463 に答える