0

ASP.NET WebAPI OData サービスがあります。EntitySetController<,>.Get() メソッドの 1 つは、エンティティ フレームワーク クエリを返します。エンティティ フレームワーク クエリは多くの行を返すため、サーバー側のページングを使用してメモリ フットプリントを適切に保ちたいと考えています。また、この場合、$skiptoken は $skip よりもはるかに高速です。

[Queryable(PageSize = n)] 属性は、次の 2 つの理由から、私が必要としているものを正確に達成していないようです。

  • 実際の SQL クエリはページングされません。.AsEnumerable().Take(n) を実行しているようです
  • 「次のリンク」は $skiptoken の代わりに $skip を使用します

私がやろうとしていることを達成する方法はありますか?

4

1 に答える 1

1

このための作業項目はすでにあります。

http://aspnetwebstack.codeplex.com/workitem/500

投票できます。それまでの間、PageSizeを使用せず、自分でページングを実装することを妨げるものは何もありません。ODataQueryOptions解析するために$skiptokenの生の値を公開しますPageResult<T>。また、$ skiptokenに基づく次のページのリンクを使用して、結果のページを表すaを返すことができます。

于 2013-03-22T20:23:20.660 に答える