2016-03-15 72 views
0

我需要使用布里斯有在角應用的兩個entityManagers,這樣我可以從兩個不同的服務中獲得的數據。一種服務是OData API,另一種服務是標準breeze web api(使用breeze控制器的asp.net web api)。微風的OData和正常的Web API

我的OData上下文工作正常,但是當我創建標準的時候,uriBuilder屬性仍然是odata,當此管理器嘗試獲取metedata時,會將$ metadata值添加到url的末尾。

breeze.config.initializeAdapterInstance('modelLibrary', 'backingStore', true); 
      breeze.NamingConvention.camelCase.setAsDefault(); 

      var serviceName = common.testApiUrl; 
      var metadataStore = createMetadataStore(); 

沒有人知道如果它甚至有可能有兩個設置?

回答

0

我設法得到這個工作,唯一的辦法就是使用DataService在去構造的entitymanagers。這意味着它們是具有自己配置的獨立對象,您可以將OData和WebApi一起使用。

這是我如何做的:

創建數據服務對象

var dataService = new breeze.DataService({ 
       serviceName: myConfig.testApiUrl, 
       hasServerMetadata: true, 
       adapterName: 'WebApi' 
      }); 

使用此數據服務實例化一個實體管理器

function newManager() { 
       var mgr = new breeze.EntityManager({ 
        dataService: dataService 
       }); 
       return mgr; 
      } 

然後,您可以使用同樣的模式無論你需要多少,只需更改適配器名稱即可。有一些額外的配置,但所有標準的微風東西,所以我沒有把它包括在這裏。

我然後創建一個DataContext每個EntityManager的,把它們封裝,然後我就可以注入,我需要爲,當我需要它的上下文。