我正在进行查询:
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,但没有帮助。
答案 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)]