Breeze-将ANY运算符与OData一起使用时出错

Breeze-将ANY运算符与OData一起使用时出错,odata,breeze,datajs,Odata,Breeze,Datajs,我尝试在OData服务上使用Breezejs的ANY operator时出错: var query = breeze.EntityQuery.from("Orders") .where("orderLines", breeze.FilterQueryOp.Any, "quantity", breeze.FilterQueryOp.GreaterThan, 50); 我得到以下错误: "TypeError: Cannot read property 'isAnony

我尝试在OData服务上使用Breezejs的ANY operator时出错:

var query = breeze.EntityQuery.from("Orders")
              .where("orderLines", breeze.FilterQueryOp.Any, "quantity",  breeze.FilterQueryOp.GreaterThan, 50);
我得到以下错误:

"TypeError: Cannot read property 'isAnonymous' of undefined
at proto._validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10334:27)
at Function.ctor.create (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10288:18)
at proto.validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10908:36)
at proto.validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10913:25)
at proto.toODataFragment (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10837:14)
at toFilterString (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10011:27)
at proto._toUri (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:9991:35)
at proto.toQueryString (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:6380:26)
at proto.getUrl (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:14140:61)
at fn.executeQuery (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:15073:34)".
var query = breeze.EntityQuery.from("Orders").top(10);
manager.fetchMetadata().then(function () {
    return manager.executeQuery(query).fail(function (data) { 
        $log.error(data) 
    });
}).then(function (data) {
    $log.info(data);
});

Error: Unable to locate a 'Type' by the name: 'Order:#System.Data.Objects'. Be sure to execute a query or call fetchMetadata first.
此HTTP请求工作正常:

http://localhost/api/service.svc/Orders?$filter=orderLines/any(ol:ol/quantity gt 50)
在执行查询之前尝试使用元数据时,出现以下错误:

"TypeError: Cannot read property 'isAnonymous' of undefined
at proto._validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10334:27)
at Function.ctor.create (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10288:18)
at proto.validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10908:36)
at proto.validate (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10913:25)
at proto.toODataFragment (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10837:14)
at toFilterString (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:10011:27)
at proto._toUri (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:9991:35)
at proto.toQueryString (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:6380:26)
at proto.getUrl (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:14140:61)
at fn.executeQuery (http://localhost/app/bower_components/bower-breeze/breeze.debug.js:15073:34)".
var query = breeze.EntityQuery.from("Orders").top(10);
manager.fetchMetadata().then(function () {
    return manager.executeQuery(query).fail(function (data) { 
        $log.error(data) 
    });
}).then(function (data) {
    $log.info(data);
});

Error: Unable to locate a 'Type' by the name: 'Order:#System.Data.Objects'. Be sure to execute a query or call fetchMetadata first.
Breeze似乎使用了错误的名称空间“Order:#System.Data.Objects”。正确的命名空间为“App.API.Context”,如exportMetadata函数所示:

{
    "shortName": "Order",
    "namespace": "App.API.Context",
    "autoGeneratedKeyType": "Identity",
    ...
}

谢谢你的帮助

该错误表示无法识别实体类型。我们还不知道它是哪种实体类型。您是否尝试过一个简单的查询,例如仅检索订单或检索订单行,并查看其是否有效?您好,我尝试了这个请求,结果成功:
var query=breeze.EntityQuery.from(“订单”).expand(“订单行”).top(1)有趣。现在,您可以尝试使用
Where
子句的变体来查询
OrderLines
以及使用
quantity
属性吗?它可以工作:
var query=breeze.EntityQuery.from(“OrderLines”).Where(“quantity”,breeze.FilterQueryOp.GreaterThan,200).top(100)。此查询发送此HTTP请求
http://localhost/api/service.svc/OrderLines?$filter=quantity gt 200&$top=100
。嗯,这真是奇怪。我想在执行失败的查询之前看看客户机元数据的样子。为此,只需在失败的查询上放置一个断点,然后在控制台中,通过调用
entityManager.metadataStore.exportMetadata()
导出entityManager元数据。这将元数据作为字符串序列化到控制台。您可以仅共享订单和订单行定义的部分。