克服MaxNodeCount> BreezeJS中的100限制

时间:2013-07-04 22:28:00

标签: javascript breeze

出于测试目的,我在几列的表格中查询“测试”一词。生成的过滤器网址如下所示:

  

$ filter =(substringof('test',Column1)eq true))和   (substringof('test',Column2)eq true))和   (substringof('test',Column3)eq true))...

查询工作正常,直到查询的列数超过15.此时我收到以下错误消息:

  

查询失败:已超出节点计数限制“100”。至   增加限制,设置'MaxNodeCount'属性   QueryableAttribute或ODataValidationSettings。

我通过在被调用的api方法中添加以下属性来解决它:

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

但这似乎与外国实体并不相符。使用expand函数时,它们始终为null。我检查了生成的过滤器网址,它确实包含必要的$ expand语法。

还有什么我想念的吗?

2 个答案:

答案 0 :(得分:8)

使用以下属性更新您的控制器方法:

[EnableBreezeQuery(MaxNodeCount = 200)]

答案 1 :(得分:1)

如果没有设置MaxNodeCount,您确定$ expand是否有效?

如果您使用WebAPI,$ expand将不会为您做任何事情,您将得到服务器的响应,如:

SelectedSubItem=null

相反,请尝试进入您的模型,而不是返回

return Context.MyClass;

这样做:

return Context.MyClass.Include("SelectedSubItem");