出于测试目的,我在几列的表格中查询“测试”一词。生成的过滤器网址如下所示:
$ 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语法。
还有什么我想念的吗?
答案 0 :(得分:8)
使用以下属性更新您的控制器方法:
[EnableBreezeQuery(MaxNodeCount = 200)]
答案 1 :(得分:1)
如果没有设置MaxNodeCount,您确定$ expand是否有效?
如果您使用WebAPI,$ expand将不会为您做任何事情,您将得到服务器的响应,如:
SelectedSubItem=null
相反,请尝试进入您的模型,而不是返回
return Context.MyClass;
这样做:
return Context.MyClass.Include("SelectedSubItem");