Breeze inlineCount未定义

时间:2013-09-19 10:06:30

标签: breeze

我正在进行查询:

var query = entityQuery.from('Items').where(fullPredicate).orderBy(sortingColumn + ' ' + ordering).skip(numOfEntities * (pageNum - 1)).take(numOfEntities).inlineCount();

return manager.executeQuery(query)
                .then(querySucceeded)
                .fail(queryFailed);

控制器看起来像这样:

[Queryable(AllowedQueryOptions = AllowedQueryOptions.All,
                    AllowedFunctions = AllowedFunctions.AllFunctions,
                    MaxNodeCount = 10000)]
        [HttpGet]
        public IQueryable<Item> Items()
        {
            return _contextProvider.Context.Items.Include("A").Include("B").Include("C");
        }

响应是纯JSON,包含所有项目和链接(包含)项目(A,B和C),但没有inlineCount。在querySucceeded中读取数据时,有一个名为inlineCount的参数,但设置为undefined。

我已尝试将以下内容添加到web.config中,但它没有帮助。

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
    <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
    <add name="Access-Control-Expose-Headers" value="X-InlineCount" />
  </customHeaders>
</httpProtocol>

也从1.4.0升级到1.4.2,但没有帮助。

2 个答案:

答案 0 :(得分:2)

我终于让我的服务器使用Breeze.js客户端和Breeze Web Api服务器控件(BreezeController)以正确的 inlinecount 值进行响应。

您需要添加属性 BreezeQueryable ,而不是标准OData 可查询。除非您在方法上方包含此属性,否则Breeze控制器不会将 inlinecount 包含在服务器响应中。

以下服务器代码解决了我的问题:

[HttpGet, BreezeQueryable]
public IQueryable<FinDataModelsPublic.InvoicesView> InvoicesView(ODataQueryOptions<FinDataModelsPublic.InvoicesView> options, int custId)
{
    return FBll.InvoicesView(custId);
}

Bll.InvoicesView上方是我的数据模型返回IQueryable结果的方法 希望这有帮助

答案 1 :(得分:1)

删除以下内容解决了问题。可能存在一个错误,其中inlineCount未包含在AllFunctions中。

[Queryable(AllowedQueryOptions = AllowedQueryOptions.All,
    AllowedFunctions = AllowedFunctions.AllFunctions,
    MaxNodeCount = 10000)]