4

出于测试目的,我在几列的表中查询术语“测试”。生成的过滤器 url 如下所示:

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

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

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

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

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

但这似乎不适用于外国实体。使用扩展功能时,它们始终为空。我检查了生成的过滤器 url,它确实包含必要的 $expand 语法。

还有什么我想念的吗?

4

2 回答 2

8

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

[EnableBreezeQuery(MaxNodeCount = 200)]

于 2015-12-16T07:11:29.020 回答
1

当没有设置 MaxNodeCount 时,您确定 $expand 有效吗?

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

SelectedSubItem=null

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

return Context.MyClass;

做这个:

return Context.MyClass.Include("SelectedSubItem");
于 2013-09-12T07:02:25.693 回答