是否可以使用breeze查询既不是具有breeze属性的控制器又具有带元数据的odata端点的端点?假设我们有一个像这样的控制器:
public class PersonsController : ApiController
{
private AppContext db = new AppContext();
[Queryable]
public IQueryable<Person> Get()
{
return db.People;
}
}
我已启用通过查询参数进行过滤,并希望使用Breeze库检索数据,下面的示例失败,因为breeze尝试查询api /元数据,当然这个控制器没有这样的元数据。< / p>
'use strict';
var serviceName = "api/";
breeze.config.initializeAdapterInstances({ dataService: "WebApi" });
var manager = new breeze.EntityManager(serviceName);
// would like a GET api/persons?$orderby=LastName&$skip=50&$top=10
var qry = breeze.EntityQuery.from('persons').orderBy("LastName").skip(50).take(10);
manager.executeQuery(qry).then(function (data) {
//expecting data.results to contain the filtered/sorted set of Persons
});
是否支持使用微风查询非微风/ odata api控制器?
答案 0 :(得分:2)
对于任何breeze DataService,您都可以告诉breeze不要期望服务的元数据。
默认情况下,breeze确实希望从服务中获取元数据,因此您需要通过设置DataService&#39; hasServerMetadata&#39;来告诉微风。为假。像这样:
var dataService = new DataService({
serviceName: "aaa/bbb/myService",
hasServerMetadata: false
});
return new EntityManager({
dataService: dataService,
});
如果您这样做,那么您还需要直接在客户端上描述元数据。有关如何执行此操作,请参阅http://www.breezejs.com/documentation/metadata-by-hand。如果您没有描述元数据,那么breeze会将任何查询的结果视为匿名类型,而不是将结果合并到本地EntityManager中。