getProperty существует в модели ODataModel (v2), как и в любой другой модели. Следовательно, использование сильно отличается:
Как ODataModel хранит данные
Это связано с тем, что ODataModel хранит данные по своим ключам, например.
{
"EntitySet('Key-1')": {},
"EntitySet('Key-2')": {},
"EntitySet('Key-3')": {},
"ExpandedEntitySet(EntityID='Key-3',ExpandedEntityIS='5')": {}
}
Отметьте oMyODataDataModel.oData
, чтобы увидеть фактически сохраненные данные (но, пожалуйста, не используйте и не манипулируйте ими таким образом, так как это внутренний API).
ODataModels getProperty
Чтобы получить один объект, вам нужно сказать что-то вроде:
oDataModel.getProperty("/EntitySet('Key-1')");
Несмотря на то, что путь привязки для коллекции /EntitySet
запрашивает
oDataModel.getProperty("/EntitySet");
ничего бы не вернул. Это происходит потому, что во внутренней структуре данных для oData["EntitySet"] нет объекта, а метод getProperty
по-прежнему не что иное, как поиск в этой внутренней структуре.
Включить развернутые объекты
Одна интересная вещь в методе ODataModels getProperty
— это параметр bIncludeExpandEntries
. Если вы установите для него значение true, доступный объект будет возвращен, включая все потенциально расширенные свойства навигации. В приведенном выше примере
oDataModel.getProperty("/EntitySet('Key-3')");
также вернет "ExpandedEntitySet(EntityID='Key-3',ExpandedEntityIS='5')" вместе с ним.
ODataModels getObject
ODataModels getObject
обладает гораздо большей гибкостью, поскольку позволяет локально использовать параметры OData $select
и $expand
. Получение EntitySet по-прежнему невозможно... ПРИМЕЧАНИЕ. Отсутствующие данные не загружаются, а возвращаемые данные могут быть неполными!
person
cschuff
schedule
04.08.2016