У меня есть весовая установка, где я использую Web API 2 с OData, но не создаю конечную точку «/ odata» с сопровождающими метаданными «/ odata/$», а вместо этого просто использую стандартные ApiController с маршрутизация атрибутов и методы Get, помеченные с помощью переопределения [Queryable]: [InlineCountQueryable], подробно описанные здесь Web API, OData, $inlinecount and testing.Queryable Web API 2 Сериализация OData
Все это работает очень хорошо, за исключением того, что я могу показывать только выделенные классы моделей без каких-либо коллекций или свойств объектов, поскольку сериализатор JSON сериализует весь граф объектов. Мое идеальное поведение состояло бы в том, чтобы все коллекции полностью игнорировались и свойства объекта включались только в $ expand.
Я считаю, что это может быть сделано для работы, потому что OData Web Api 2 scaffold VS 2013 создает над контекстом фреймворка сущности, имеет подобное поведение, но я хотел бы сохранить это как можно более худым и избежать этого маршрута, как я нашел это будет немного хрупким, и эта услуга не должна раскрывать описание метаданных $.
Update
Я сделал некоторые раскопки в образцах САШ и нашел «CustomODataFormatter» образец, который, кажется, чтобы выставить оборудование мне нужно изменить .. однако установка ODataSerializerProvider/ODataSerializer описанной там не работает с атрибутной маршрутизацией вообще (любой метод, определенный с помощью [Route («Some/Url»)]).
Учитывая, что это похоже на то, что мне нужно, кто-нибудь знает, должна ли быть организована маршрутизация атрибута, а механизм провайдера сериализации odata должен работать вместе?
Что вы хотите сказать? –
Извините, я добавил обновление, которое содержит явный вопрос. – SourceSimian
Спасибо, но жаль, что я не знаю ответа. –