升级到面向Web API 2的breeze 1.4.6之后,我相信在分页之后正在应用投影查询的inlinecount。
例如,如果我指定take(5),那么 inlinecount将返回5,即使过滤器匹配说100条记录。
您能否确认这是breeze 1.4.6的问题?
查看QueryHelper中的代码,看起来只有在修改odata查询以支持“选择”“嵌套”属性时才会发生这种情况。
我能够在失败的单元测试中重现这个问题:
/*********************************************************
* inlineCount of projected paged products
*********************************************************/
test("inlineCount of projected paged products", 2, function () {
// Filtered query
var productQuery = EntityQuery.from("Products")
.where("ProductName", "startsWith", "C");
// Paging of that filtered query ... with inlineCount
var pagedQuery = productQuery
.select("ProductName, Category.CategoryName")
.orderBy("ProductName")
.skip(5)
.take(5)
.inlineCount();
var productCount, pagedCount, inlineCount;
var em = newEm();
stop(); // going async
// run both queries in parallel
var promiseProduct =
em.executeQuery(productQuery)
.then(function (data) {
productCount = data.results.length;
});
var promisePaged =
em.executeQuery(pagedQuery)
.then(function (data) {
pagedCount = data.results.length;
inlineCount = data.inlineCount;
});
Q.all([promiseProduct, promisePaged])
.then(function () {
ok(inlineCount,
"'data' from paged query should have 'inlineCount'");
equal(inlineCount, productCount,
"'inlineCount' should equal product count");
})
.fail(handleFail)
.fin(start);
});
非常欢迎修复: - )
答案 0 :(得分:0)
不确定您要找的是什么修复程序。从Breeze docs(我添加了突出显示) -
inlineCount 整数 - 仅当“inlineCount(true)”应用于查询时才可用。返回在应用任何skip或take运算符之前查询返回的项目数,但在任何过滤器之后应用谓词。
答案 1 :(得分:0)
这已在Breeze 1.4.7版本中修复,现已发布
这是Breeze 1.4.6中涉及select和inlinecount的错误。它已经在GitHub的源代码和dll中得到修复。 (你可以继续直接拉dll)。这个修复程序也将在下周的某个时间发布在1.4.7版本中。