BestPractices: Допустимо ли использовать более одного хранилища в MVC-контроллере? - PullRequest
12 голосов
/ 24 февраля 2010

У меня есть связь «многие ко многим» между Сотрудником и Командой. У каждого объекта есть хранилище.

Теперь я использую ASP.NET MVC и создал EmployeeController. Я также создал вид для редактирования сотрудника. Для этого просмотра мне нужен DropDownList со всеми командами. Проблема в том, что у моего EmployeeController есть только EmployeeRepository. Так как я могу получить все команды? Мое решение сейчас состоит в том, чтобы использовать два хранилища.

Но разве это хорошее решение?

Могу ли я создать TeamController и написать метод, возвращающий все команды (как бы я это сделал)?

Ответы [ 4 ]

10 голосов
/ 25 февраля 2010

Это нормально, но как только вы почувствуете, что контроллер слишком перегружен, вы можете преобразовать его зависимости в агрегированную службу .

8 голосов
/ 24 февраля 2010

Да, для контроллера вполне приемлемо иметь ссылки на два репозитория.

На самом деле мои контроллеры работают с несколькими репозиториями чаще, чем нет.

3 голосов
/ 25 февраля 2010

Хотите стать умным? Не используйте репозитории внутри контроллеров вообще. Вместо этого используйте доменные службы. Звучит не так плохо, если вы думаете, что один контроллер интегрирует работу многих служб, не так ли?

1 голос
/ 24 февраля 2010

Обычно вы создаете хранилище для совокупного корня. В хранилище будут методы, возвращающие сущности, заполненные для контроллера.

Если сущности совершенно не связаны с вашей моделью домена, вы можете создать службу, объединяющую два отдельных репозитория для получения необходимых данных.

...