我正在跟随John Papa关于SPA的课程与Durandal和Breeze,我遇到了EntityQuery.fromEntities方法的问题。事实上,我正在观看课程主要是为了了解如何使用Durandal和Breeze,因为我正在编写一个完全不同的SPA。
实际上,我正在编码的那个没有一个Breeze控制器,它每个聚合有一个控制器。所以对于每个控制器,我有一个Breeze的EntityManager。我的疑问如下:我有一个CustomersController,并按照John的课程列出了客户表我做了一个投影查询并加载了部分实体。
现在,当我要访问每个客户的详细信息和编辑时,我需要完整的数据。所以,我在我的viewmodel中使用了以下代码:
function reloadCustomer(customer) {
return EntityQuery.fromEntities(customer)
.using(customersManager).execute()
.then(querySucceeded);
}
唯一的问题是此查询的目标是resourceName Customers
。这是一个问题,因为customersManager
有serviceName /api/customers
,因此请求/api/customers/Customers
不存在。
当我有多个控制器的场景而不是单个EntityQuery.fromEntities
服务网址时,如何使用/api/breeze
方法?
答案 0 :(得分:1)
您需要查看其网站上的Breeze.js文档,以了解有关构建查询的更多信息。您使用的方法假定您已将实体类型(“客户”)与资源(“客户”)匹配,并且您的数据服务始终会命中同一个控制器。您有很多选项可以设置它,但最简单的方法是为您的经理定义一个数据服务,以定义您的经理将使用的数据服务,然后您可以将实体映射到资源,如本教程中所示,或者您可以使用.from()
代替fromEntities()
定义数据服务
var ds = new breeze.DataService({
serviceName: '/api'
});
var mgr = new breeze.EntityManager({ dataService: ds });
然后你可以使用.from() -
var query = EntityQuery.from('myControllerName/customers')