誰かが私を助けることができると思います。私はカスタムのページングをODataフィード(oData v4)に実装しようとしています。私が午前問題は、以下のコードは、ページングから離れて完璧に動作することであるしかし、私は(ワーキングパーフェクト)は、私は以下のことでページングする手段を追加したために、ストアドプロシージャからOData(v4)Web APIにカスタムページングを追加するC#
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNum, *
FROM dbo.Order
WHERE CompanyID = @CompanyID
) AS RowConstrainedResult
WHERE RowNum >= @Start AND RowNum <= @Finish
ORDER BY RowNum
をIEnumerableをを満たしていません
基本的には、結果を100のバッチでページングしようとしていますが、必要に応じてデータベースから100を取っています。
私は最初にコントローラを呼び出すと、期待した結果が得られます。
http://localhost:24600/Data/Orders
しかし、私は(下)このnextLinkを照会するとき、私は50,000以上のデータベースにおける結果とIEnumerableを結果が正しく更新されているがあり事実にもかかわらず、エラーが、何もありません何を取得していません。
http://localhost:24600/Data/Orders?$skip=100
私がodataを初めて使用しているときに私がこれを手伝ってくれたら大変感謝しています。
更新
それは、それは最初のバッチのサイズをカウントし、合計サイズとして、私は合計サイズを設定していていてもすることを取っている、ように見えます。初期のサイズを上回ることはできないようです。あなただけ(IQueryable
など)の完全なセットを返し、ODataのは、ページングを処理させることができ
docsから:大規模なエンティティセットの場合、クライアントは結果の数を制限したいかもしれません。たとえば、クライアントは一度に10個のエントリを表示し、次のページを取得するために「次の」リンクを表示することがあります。これを行うために、クライアントは$ topと$ skipオプションを使用します。 http:// localhost/Products?$ top = 10&$ skip = 20 – Daniel
実際に($ top = 10&$ skip = 20のような)データをクエリしようとすると、シーンが起こっているにもかかわらず、IEnumerable結果が表示されません。私は応答の中に次のバッチを置いている例のために、私は戻り値にブレークポイントを置くことによってデバッグするときに結果を見ることができますが、それを表示することを拒否しています。奇妙なことは間違いがないということです。 –