Breeze的EntityQuery.fromEntities - 使用自定义resourceName

时间:2014-02-01 20:24:26

标签: breeze

我正在跟随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方法?

1 个答案:

答案 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')