breezejs: свойство навигации создано, но не заполнено данными
У меня есть еще одна проблема со свойствами навигации, но на этот раз моя конфигурация - WCF Data Service + EF.
В основном метаданные выглядят хорошо, у меня есть референтные ограничения, ассоциации и т. Д.Мы установили атрибут [ForeignKey] в модели.
Свойство навигации создается на стороне клиента, но когда данные извлекаются (с использованием $ expand), коллекция не заполняется, хотя данные определенно возвращаются сервером:
Здесь есть связь между mand_id в OpenPosition и id в Mandate.I '
Мы заметили, что объект Mandate в коллекции OpenPositions содержит __deferred с URI для объекта. Я не видел этого с WebApi, так что, может быть, этопроблема, или, может быть, этоПросто нормальное поведение.
Есть ли что-то, что ям отсутствует?
РЕДАКТИРОВАТЬ
Запрос на стороне клиента:
var query = breeze.EntityQuery.from("Mandates").inlineCount().expand("OpenPositions");
return manager.executeQuery(query.using(service)).then(function (result) {
logger.info(result);
}).fail(function (error) {
logger.error(error);
});
РЕДАКТИРОВАТЬ 2
Причина, по которой свойство навигации не заполнено, заключается в том, что в случае WCF Dataservice свойство навигации возвращается как объект, который содержит свойство Array, называемое results.
Принимая во внимание, что в случае WebAPI свойство навигации возвращается как массив.
Обратите внимание, что в обоих случаях использовалась одна и та же модель данных (контекст EF).
Смотрите скриншоты:
WCF:
WebAPI:
Но breeze ожидает Array в противном случае, он просто игнорирует свойство навигации и возвращает null:
// needed if what is returned is not an array and we expect one - this happens with __deferred in OData.
if (!Array.isArray(relatedRawEntities)) return null;