【发布时间】:2013-06-11 18:02:28
【问题描述】:
我在这里遇到了一些棘手的情况。我的应用程序需要访问两个服务。一种是纯 ODATA 服务,另一种是 WebAPI(带有 Breeze 控制器)服务。
我的应用程序是围绕 AngularJS 模块设计的,并且微风被注入到两个不同的单实例服务中:
angular.module('domiciliations.services').
factory('domiciliationService', function (breeze) {
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
//more initialization goes here
//then query methods go here
}
和
angular.module('person.services').
factory('personService', function (breeze) {
breeze.config.initializeAdapterInstances({ "dataService": "OData" });
//more initialization goes here
//then query methods go here
}
现在很明显的问题是,一旦个人服务被实例化,则 domiciliations 服务就会使用 OData,因为配置已被覆盖。
那么,解决这个问题的一般方法是什么?有没有办法隔离配置? 到目前为止,我能想到的唯一方法是每次调用查询方法时都调用 initializeAdapterinstances 方法,这并不是真正可取的。
编辑
根据 Jay 的建议,我现在正在使用 DataService。我在 ctor.resolve 中遇到错误:
ds.jsonResultsAdapter = ds.jsonResultsAdapter || ds.adapterInstance.jsonResultsAdapter;
ds.adapterInstance 为空,因此这会引发异常。但我不明白为什么它是空的。
这是我所做的:
var service = new breeze.DataService({
serviceName: 'http://localhost:16361/api/mandates',
adapterName: 'WebApi'
});
var manager = new breeze.EntityManager({ dataService: service });
//this is the line causing the later exception:
manager.fetchMetadata().then(function () { ... }
我忘记做某事了吗?
【问题讨论】: