2013-03-05 5 views
2

to-do list sample использует BreezeController для предоставления API. EFContextProvider используется для обеспечения строки и методов Metadata, таких как SaveChanges().Должен ли я использовать BreezeController?

Проблема: он напрямую разговаривает с DbContext. Я все еще хочу иметь возможность возвращать свои собственные модели представлений вместо этих моделей домена.

В обычном ApiController мы с легкостью можем вернуть наши собственные модели взглядов. Но если я перехожу к обычному ApiController, при вызове API, breeze просит Metadata, который поставляется

[HttpGet] 
public string Metadata() { 
    return _contextProvider.Metadata(); 
} 

если мы используем BreezeController.

Итак, мой вопрос в том, нужно ли использовать BreezeController? Как мы можем использовать его с помощью настраиваемой модели? Или, если мы используем обычный ApiController для большей гибкости, как мы можем предоставить Metadata?

ответ

3

«BreezeController» - это просто любой контроллер API с атрибутом «BreezeController».

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

Метод «Метаданные» необходим только в том случае, если вы хотите, чтобы сервер предоставлял метаданные о типах, которые могут возвращать запросы. Эти же метаданные также могут быть предоставлены «клиентской стороне», так что вам не нужно реализовывать этот метод. В примере примера NoDb в zip-файле для бриза есть пример этого.

Нет необходимости требовать, чтобы вы возвращали модели домена вместо моделей. Либо работает. Вам просто нужно предоставить метаданные для типов, возвращаемых любой используемой моделью. Также взгляните на метод EntityQuery 'withParameters', если вы хотите выполнить пользовательскую логику на стороне сервера на основе какой-либо произвольной клиентской информации.

Смежные вопросы