1

当我对一个查询调用 inlineCount() 时,该查询既按相关属性排序,又对查询执行 take,inlineCount 等于传递给 take() 的参数。例如,以下查询返回正确的 inlineCount:

    testFunc = function () {
        EntityQuery.from('Residents')                    
                .take(10)                    
                .inlineCount()
                .using(manager).execute()
                .then(function (data) {
                    console.log(data.inlineCount, data);  //logs correct value                      
                });
    }

但是当我向查询中添加排序时,如下所示:

testFuncOrdering = function () {
    EntityQuery.from('Residents')
            .orderBy('user.firstName')
            .take(10)
            .inlineCount()
            .using(manager).execute()
            .then(function (data) {
                console.log(data.inlineCount, data); //logs 10
            });
}

inlineCount 是 10,或者我传递的任何值

这是我的控制器操作:

[HttpGet]
public IQueryable<UserDetail> Residents()
{
    return _context.Context.UserDetails
        .Where(x => _aptIds.Contains(x.User.UserDetail.ApartmentComplexId))
        .Where(x => x.Discriminator == UserDetail.Resident);
}     

这个错误似乎类似于 1.4.0 中修复的错误,但我没有为 inlineCount 获得 null/undefined,而是获得了取值。如有必要,我可以提供我的元数据。任何帮助表示赞赏,谢谢。

4

2 回答 2

3

我已确认您的发现并在内部报告为缺陷 #2493。这是我的复制品:

首先,我们知道至少在某些时候可以使用inlineCount。这是来自 DocCode 的测试通过:orderBytake

var productQuery = EntityQuery.from("产品"
    .where("ProductName", "startsWith", "C");

var pagedQuery = productQuery
    .orderBy("产品名称")
    .skip(5)
    .take(5)
    .inlineCount();

JSON结果是:

{
  $id:“1”,
  $type: "Breeze.WebApi.QueryResult, Breeze.WebApi",
  结果: [
    {...},
    {...},
    {...},
    {...},
  ],
  内联数:9
}

四款产品共返回了 9 款名称以“C”开头的产品。.skip(5)是的,没有;它仍然有效 它返回前 5 个产品,然后再次报告总共 9 个合格产品。

这是为该查询生成的 URL:

http://localhost:47595/breeze/Northwind/Products?$filter=startswith(ProductName,'C') eq true&$orderby=ProductName&$top=5&$inlinecount=allpages

所以我们知道 Breeze 至少在某些时候会做正确的事 :)

你怎么了?

似乎问题orderBy在相关实体属性上(例如,您的“user.firstName”)。

回到 DocCode,我将查询 URL 修改为 get OrderDetails,并按相关的Product.ProductNames. 我没有费心编写微风查询。我只是将生成的 URL 输入到浏览器地址栏中。

这是带有 orderBy 的 URL:

http://localhost:47595/breeze/Northwind/OrderDetails?$orderby=Product/ProductName&$top=5&$inlinecount=allpages

结果inlineCount5 ...take实际返回的值和记录数。

当我删除orderBy

http://localhost:47595/breeze/Northwind/OrderDetails?$top=5&$inlinecount=allpages

我们再次得到 5 个 OrderDetails 但结果inlineCount2155!!!

休斯顿,我们有一个问题。

于 2013-07-28T06:09:41.667 回答
1

这已在 Breeze v 1.4.1 中修复,现在可用。

于 2013-08-13T23:34:43.413 回答