Breeze-将ANY运算符与OData一起使用时出错
我尝试在OData服务上使用Breezejs的ANY operator时出错: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
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元数据。这将元数据作为字符串序列化到控制台。您可以仅共享订单和订单行定义的部分。