【问题标题】:WebAPI using BreezeJS throws an error as soon as I use $skip只要我使用 $skip,使用 BreezeJS 的 WebAPI 就会引发错误
【发布时间】:2014-12-19 21:52:38
【问题描述】:

我有一个工作的 WebAPI (v2),它利用了很棒的 BreezeJS 产品。我正在尝试添加分页功能,但只要我在 URL 中包含 $skip 作为参数,WebAPI 就会生成此错误:

{
  $id: "1",
  $type: "System.Web.Http.HttpError, System.Web.Http",
  Message: "An error has occurred."
}

调试 API 不会给我任何额外的信息,因为它不会崩溃。

我传递的参数是:http://www.example.com/api/Test/Designs?$skip=5&$top=5&$inlinecount=allpages&

如果我在没有 $skip 参数的情况下调用它,它可以正常工作。其他“$”参数似乎工作得很好,我可以这么称呼:

http://www.example.com/api/Test/Designs?$top=3

它按预期工作。

我已经验证我没有使用任何 BreezeQueryable 属性或任何东西,所以应该允许 $skip。

如果有帮助,请提供其他设置信息:

  • SQL Server Express v2012
  • 微风服务器端是v1.5.0.0
  • 实体框架 v6
  • Microsoft.Data.OData 是 v5.6

为了使用分页,我还需要启用其他功能吗?或者有没有办法找到这个错误的真正原因?如果需要,我可以提供一个有效的 URL。

谢谢。

【问题讨论】:

  • 正确。使用.skip 子句时,必须添加.orderby 子句。您将在the breeze query documentation 中看到这一点。这是 EF 约束,而不是 Breeze 约束。
  • 感谢 Jeremy 和 Ward - 这就是解决方案。杰里米,请提交一个答案,这样你就可以先得到我的答案。 (也谢谢你 Ward - 你一直是社区的巨大帮助者)
  • Ward - Breeze 服务器端是否有可能监视这样的情况并在 EF 掌握它之前抛出错误?至少那时我们可以显示一个有意义的错误。对增强请求的想法?

标签: javascript asp.net-web-api2 breeze


【解决方案1】:

需要排序才能使用skip

来自breeze docs

// Skip the first 10 Products and return the rest
// Note that the  '.orderBy' clause is necessary to use '.skip'
// This is required by many server-side data service implementations
var query3 = EntityQuery.from('Products')
    .orderBy('ProductName')
    .skip(10);

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 2021-04-16
    • 2020-12-12
    • 1970-01-01
    • 2017-04-04
    • 2014-03-09
    • 2013-05-03
    • 2019-08-06
    • 2021-10-17
    相关资源
    最近更新 更多