Как выбрать и расширить свойства, доступные только в производных типах
У меня есть три объекта в иерархии наследования, как показано ниже.
<EntityType Name="Base" Abstract="true">
<Property Name="id" Type="Edm.String" Nullable="false" />
</EntityType>
<EntityType Name="Derived1" Abstract="true" BaseType="Base">
<NavigationProperty Name="idps" Type="Collection(Idps)" />
</EntityType>
<EntityType Name="Derived2" Abstract="true" BaseType="Base">
<NavigationProperty Name="attributes" Type="Collection(Attributes)" />
</EntityType>
Я хочу поддерживать параметры запроса $select и $expand для идентификаторов и атрибутов.
/ base?$select = idps дает мне ошибку ниже
Запрос, указанный в URI, недействителен. Не удалось найти свойство с именем idps в типе Base."
Какой будет правильный вариант odata и как я могу это поддержать?
2 ответа
ODL поддерживает сегмент приведения типов в $select и $expand.
Вот несколько тестовых примеров, к которым вы можете обратиться:
Тестовые примеры охватывают приведение типа сложного типа, так же как и приведение типа сущности.
Мне удалось решить эту проблему с помощью запроса, подобного следующему:
/base?$select=Derived1/idps
В моем случае мои типы сущностей OData имеют явное пространство имен, поэтому мне пришлось фактически использовать запрос, подобный следующему:
/base?$select=Namespace.Derived1/idps