Возвращение списка, содержащего несколько типов сущностей в odata v4 (аналогично $ all) - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно создать действие с использованием odata v4 (реализация Web Api 2), которое может возвращать либо список, содержащий несколько разных типов сущностей, либо действие, которое возвращает объект, содержащий много типов сущностей.

Однако, если я создаю действие, возвращающее список, я получаю сообщение об ошибке, указывающее, что все элементы в списке должны быть одного типа (или наследоваться от общего типа).Теперь я предполагаю, что средства являются производными от общего типа, зарегистрированного в модели данных сущностей, поскольку все они наследуются от объекта.

Если я создаю тип для вложения различных типов сущностей, в которые я хочу вернуть, объектвозвращаемое не имеет данных (я предполагаю, что из-за того, что содержимое является типом сущности, оно пытается быть полезным и оставляет их как свойства навигации или что-то в этом роде, но это не то, что мне нужно).

Пока я копалпытаясь выяснить, как зарегистрировать действие в модели, я натолкнулся на конечную точку $ all (которая, похоже, не работает в реализации web api 2, но, возможно, мои пользовательские компоненты также сломали ее) http://docs.oasis -open.org / OData / OData / v4.0 / errata03 / OS / полный / part2-url-конвенция / OData-v4.0-errata03-OS-part2-url-конвенция-complete.html # _Toc453752355 Однако я не имею ни малейшего понятия, как сделать что-то подобное из действия.

Я надеюсь, что это так же просто, как

actionConfig.ReturnsCollectionOfTypelessGoo() 

, но я готов прыгать через обручи, яе что нужно:)

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Рассмотрите возможность использования нетипизированной модели.Пример проекта здесь

0 голосов
/ 11 октября 2018

Первая мысль - List<object> или лучше new { data = new List<object>() }, поскольку возврат массивов может вызвать проблемы.


Обновление: вы также можете вернуть json в виде строки, если все не получится.

...