2013-03-06 4 views

ответ

0

«BreezeController» - это просто атрибут .NET, который помогает .NET WebApi обеспечивать поддержку фильтрации и упорядочения запросов с помощью синтаксиса OData и также поддержки сериализации json для графов сущностей и идентификации типов. Идентификатор типа важен, так что бриз может отслеживать сущности внутри его entityManager и объединять результаты запросов и свойства отношения обновления. Сама OData никогда не требуется.

Если вы не хотите, чтобы клиент добавлял на сервер команды фильтрации и заказа, вы можете написать свой собственный атрибут, который просто предоставляет поддержку сериализации json. Сериализация json состоит только в настройке форматирования json.net, который уже использует веб-api.

Источник для BreezeControllerAttribute может быть найден в проекте Breeze.WebApi и действительно очень короткий. Просто создайте свой собственный «FooControllerAttribute», скопировав «BreezeControllerAttribute» и удалите код IFilterProvider.

С другой стороны, поддержка запроса и фильтрации ничего не повредит, и эта логика даже не применяется, если вы не используете методы EntityQuery 'where' 'orderBy' 'select' или 'expand', поэтому, если вы не хочу явно удалить эту способность, нет необходимости не использовать «breezeControllerAttribute»

+0

Но кажется, что клиент Breeze не распознает ответ json, когда он приходит без метаданных. Посмотрите атрибут $ type в ответе [todo sample] (http://todo.breezejs.com/api/todos/Todos?$filter=IsArchived%20eq%20false&$orderby=CreatedAt). API, с которым мой клиент разговаривает, не имеет этого атрибута $ type, я думаю, что он заставит моего клиента Breeze вернуть Object вместо создания экземпляра зарегистрированного EntityType. –

+0

Вы правы, прямо сейчас нам нужен атрибут $ type, предоставляемый путем настройки сериализатора json.net, чтобы распознать тип и объединить данные в entityManager, иначе результаты запроса будут возвращены как простые объекты. Мы активно работаем над тем, как разработчик может сообщить клиенту о типах, возвращаемых из запроса, или для клиента бриза, который будет снабжен правилами вывода, чтобы он мог определять тип ответа, если он явно не предоставлен сервером , –

+0

Было бы хорошо! Планируется ли это? Или было бы лучше предложить на http://breezejs.uservoice.com? –