var p1 = breeze.Predicate.create("Status", "==", 3);
var p2 = breeze.Predicate.create("Client/Status", "==", 1);
var p = breeze.Predicate.and([p1, p2]);
在上面的代码中,最终谓词p转换为:
(Status eq 3) and (Client/Status eq '1')
在Fiddler / Web检查员xhr视图中查看。
为什么在扩展实体的字段上创建谓词时,整数1被视为字符串('1')(“客户端/状态”,请参见谓词p2)。这会导致http请求作为错误请求失败。
在第一级字段上正确构造了相同类型的谓词(“状态”,参见谓词p1)。
注意:当我去Fiddler时,此请求正常,删除值1周围的单引号并执行。
答案 0 :(得分:1)
我认为问题是你需要使用点'。'分离路径的各个部分而不是'/'。即。
var p2 = breeze.Predicate.create("Client.Status", "==", 1);
您将“客户端/状态”解释为字符串的原因是,当无法确定字段的实际数据类型时,breeze会将值默认为字符串。它通过导航路径并通过元数据确定每个段的数据类型来确定数据类型。
希望这有帮助。