Какой степенью ответственности должен обладать мой репозиторий / сервис?

StackOverflow https://stackoverflow.com/questions/1562247

Вопрос

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

Человек <- Контакт -> Представитель клиента <- Клиент

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top