我在这里面临一个棘手的情况。我的应用程序需要访问两个服务。一种是纯 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 为 null,因此这会引发异常。但我不明白为什么它是空的。
这是我所做的:
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 () { ... }
我是不是忘了做点什么?