2016-05-06 2 views
0

Я следую за SPA by John papa, я разработал образец приложения, используя Hottowel, Angular and Breeze.Как заблокировать EntityQuery для вызова метаданных

На нагрузке приложения я Извлечение metadatastore

function fetchMetadataOnPageLoad() 
{ 
    var store = manager.metadataStore; 
      return store.fetchMetadata(serviceName) 
      .then(gotMetadata) 
      .catch(handleFail); 
} 

В приведенном выше шаге Метаданные загружаемого с сервера.

Тогда я переходите на какую-то страницу и пытаюсь извлечь данные с помощью следующего запроса

function GetAllUsers() 
     { 
      manager = emFactory.newManager(); 
      var query = EntityQuery.from('users'); 
      manager.executeQuery(query) 
         .then(querySucceeded, _queryFailed); 
     }` 

`

Тогда я получаю следующее исключение, так как запрос вызов метода метаданных сервера дважды но я уже получил метаданные в pageload.

Ошибка:

запроса Metadata Сбой: ветер/Бриз/метаданные. Невозможно проанализировать или импортировать метаданные: Тип уже существует в этом метаданных; Ошибки на стороне сервера - см. Коллекцию entityErrors на этом объекте.

Есть ли способ ограничить вызов метаданных во время выполнения запроса.

Пожалуйста, исправьте меня.

спасибо.

Хари C

ответ

0

При создании EntityManager, скажи вы извлечь метаданные сервера вручную:

var dataService = new breeze.DataService({ 
    serviceName: 'api/Datamart', 
    hasServerMetadata: false // solution here - will prevent metadata call on 1st query 
}); 
var store = new breeze.MetadataStore(); 

store.fetchMetadata(dataService.serviceName) 
    .then(function() { 
     manager = new breeze.EntityManager({ 
      dataService: dataService, 
      metadataStore: store 
    }); 
}; 
+0

Это идеальное решение. Спасибо за помощь :) –