克服MaxNodeCount>BreezeJS中的100限制

Overcoming MaxNodeCount > 100 limit in BreezeJS

本文关键字:中的 限制 BreezeJS MaxNodeCount gt 克服      更新时间:2023-09-26

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

$filter=(substringof('test',第1列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。我检查了生成的过滤器url,它确实包含了必要的$expand语法。

我还缺什么吗?

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

[EnableBreezeQuery(MaxNodeCount=200)]

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

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

SelectedSubItem=null

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

return Context.MyClass;

这样做:

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