Какую ответственность должен иметь мой репозиторий / сервис? - PullRequest
0 голосов
/ 13 октября 2009

У меня есть следующие объекты:

Персона <- Контакт -> КлиентыПерсон <- Клиент </p>

Я использую шаблон хранилища со служебным слоем. Но уже здесь, будучи перфекционистом, я потерян!

У меня также есть PersonService, ClientService, и я почти уверен, что мне нужен ContactService, который должен вызывать personService.Add (person) и clientsPersonService.Add (client) - или?

Задача - добавить контакт. Контакт будет иметь связанный объект Person и объект ClientsPerson. И это ClientsPerson будет оф. есть клиент.

Куда должны идти разные работы? Я слышал, что плохо называть службу / хранилище из одного в другой.

1 Ответ

0 голосов
/ 13 октября 2009

Этот ответ зависит от вашего ORM и от того, как он спасается каскадами. Мы предполагаем, что вы не используете ORM, каскадно меняющий изменения.

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

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

Репо должны быть относительно тупыми. Службы должны заниматься взаимоотношениями и деловой работой (за исключением чего-то вроде NHib, а может, даже тогда).

...