WebApi 重新排序结果?

WebApi reordering results?

我对 WebApi 和 OData 有疑问。慢慢地移动一个 API 然后...现在似乎框架正在重新排序结果。

以下代码:

    [EnableQuery(PageSize = 100, MaxTop = 1000, AllowedQueryOptions = AllowedQueryOptions.All)]
    [ODataRoute]
    public IEnumerable<Reflexo.Api.GrdJob> Get(ODataQueryOptions options) {
        var nodes = Repository.GrdJob
            .Include(x=>x.Cluster)
            .OrderByDescending(x => x.Id)
            .Select(x => new Reflexo.Api.GrdJob() {
                Id = x.Id,
                Identity = x.Code,
            }).AsQueryable();
        nodes = (IQueryable<Reflexo.Api.GrdJob>)options.ApplyTo(nodes);
        var retval = nodes.ToArray();
        return nodes;
    }

非常简单。将调试器中的结果与我在调用该方法的屏幕上看到的结果进行比较...结果顺序不同。

请注意,我正在比较我在浏览器中看到的 JSON 的数据库端 ID 字段 (id) 和名为 retval 的数组中的字段。我强加了一个人为的默认顺序——它也进入了 SQL(选中)和数组(选中)。

只是 JSON 以不同的顺序显示结果。

我错过了什么吗?

请注意 EnableQueryAttribute 将使用一组默认的查询设置再次执行 ODataQueryOptions.ApplyTo 。 (请参阅 EnableQueryAttribute.ApplyQuery 方法源代码。)尝试删除该属性。

感谢其他贡献者post。我 运行 遇到了上述相同的问题,并设法通过将 EnsureStableOrdering = false 添加到我的 [EnableQuery()] 属性来禁用 OData 的默认排序。