Как выбрать и расширить свойства, доступные только в производных типах - PullRequest
0 голосов
/ 27 мая 2020

У меня есть три объекта в иерархии наследования, как показано ниже.

<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 для idps и атрибутов.

/ base? $ Select = idps дает мне ошибку ниже

Запрос, указанный в URI, недействителен. Не удалось найти свойство с именем 'idps' в типе 'Base'. "

Какой вариант odata будет правильным и как я могу его поддержать?

1 Ответ

0 голосов
/ 27 мая 2020

ODL поддерживает сегмент приведения типов в $ select и $ expand.

Вот несколько тестовых случаев, на которые вы можете обратиться:

1) https://github.com/OData/WebApi/blob/master/test/E2ETest/Microsoft.Test.E2E.AspNet.OData/NavigationPropertyOnComplexType/SelectImprovementOnComplexTypeTests.cs#L141

2) https://github.com/OData/WebApi/blob/master/test/E2ETest/Microsoft.Test.E2E.AspNet.OData/NavigationPropertyOnComplexType/SelectImprovementOnComplexTypeTests.cs#L284

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

...