Web Api に OData サービスを使用して、クライアント アプリにページネーションを提供しています。これは、私のコントローラー メソッドの 1 つのコードです。
// Get all Categories
[HttpGet]
[ActionName("all")]
public ODataResult<DataAccess.Model.Category> GetCategoryList(ODataQueryOptions options)
{
var categoryList = this.Repository.GetCategories().AsQueryable<Category>();
var results = (options.ApplyTo(categoryList) as IQueryable<DataAccess.Model.Category>);
long count = categoryList.Count();
if (count == 0)
count = 1; // throws up an ArgumentException error if the count is less than 1
return new ODataResult<DataAccess.Model.Category>(results, null, count);
}
しかし、api/Category/all?$skip&$top=5 のような API 呼び出しで OData プロトコルを使用すると、5 ~ 10 個の要素がデータベースに存在する正確な順序が返されません (つまり、主キーでソートされます)。 =ID)。すべての API 呼び出しに $orderby=ID を使用することでこれを修正できますが、回避できるかどうかを知りたいです。デフォルトでは、OData サービスはデータベースにあるのと同じ順序で返されるはずなので、ここで何か間違ったことをしていますか? アイデアや提案があれば教えてください。
ありがとう