【问题标题】:Breeze 1.4.6 - inlinecount on projection query being applied AFTER pagingBreeze 1.4.6 - 在分页后应用投影查询的 inlinecount
【发布时间】:2013-12-14 00:49:45
【问题描述】:

在升级到针对 Web API 2 的微风 1.4.6 后,我相信在分页之后应用投影查询的内联计数。

例如,如果我指定 take(5),那么 inlinecount 会返回 5,即使过滤器匹配 100 条记录

你能确认这是微风 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);
});

非常欢迎修复 :-)

【问题讨论】:

    标签: breeze


    【解决方案1】:

    更新:

    此问题已在 Breeze 1.4.7 版本中得到修复,现在可用

    上一篇文章

    这是 Breeze 1.4.6 中涉及 select 和 inlinecount 的错误。它已经在 GitHub 上的源代码和 dll 中修复。 (您可以直接拉动 dll)。此修复程序也将在下周某个时候在 1.4.7 版本中发布。

    【讨论】:

    • 是的,我以为我在 master 中看到了修复
    【解决方案2】:

    不确定您在寻找什么修复方法。来自 Breeze 文档(我添加了突出显示) -

    inlineCount 整数 - 仅当 'inlineCount(true)' 应用于查询时才可用。返回在应用任何 skip 或 take 运算符之前,但在应用任何过滤器/where 谓词之后,查询将返回的项目数。

    【讨论】:

    • 你说得对——我的错。我需要纠正我的问题。我应该说 inlinecount 是在应用分页之后应用的。因此,例如,如果我要求 take(10),那么即使过滤器匹配 100 条记录,内联计数也会返回 10。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多