2016-03-15 4 views
0

Мне нужно иметь два менеджера сущностей в угловом приложении с использованием breese, чтобы я мог получать данные из двух разных сервисов. Одна услуга - это API OData, а другой - стандартная веб-авизация breeze (asp.net web api с использованием контроллеров бриза).breeze odata и normal 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 для управления сущ. Это означает, что они представляют собой отдельные объекты с их собственной конфигурацией, и вы действительно можете использовать 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, чтобы инкапсулировать их, и затем я могу просто вставить контекст, который мне нужен, и когда он мне понадобится.