Репозиторий vs Сервис - Подписка - Оба? - PullRequest
0 голосов
/ 31 марта 2011

Скажем, я - клиент компании, и эта компания предлагает мероприятия.

У нее есть таблица клиентов и таблица событий.Для подписчика.Это таблица подписки (как соединение, с дополнительным атрибутом: AccompaniedByPartner).

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

Но теперь проблема в подписке.

Имеется ли в подписке хранилище для добавления, удаления, изменения и перечисления, а также служба для PerformJoinSubscription и PerformCancelSubscription?Или у него есть только Сервис?

1 Ответ

3 голосов
/ 31 марта 2011

Чтобы ответить на подобные вопросы, спросите, может ли вещь стоять самостоятельно или она имеет смысл только в контексте чего-то другого. Подписка явно не имеет смысла без клиента и события, и, следовательно, не должно нуждаться в собственном репозитории. Формально, только объекты, которые являются агрегированными корнями, должны иметь репозитории.

Вместо этого предоставьте метод Subscribe для Event, который принимает параметр Customer (или метод Join для Customer, который принимает событие, в зависимости от того, где вы хотите, чтобы он был), и обновите внутреннюю коллекцию для ассоциации. Когда вы сохраняете измененную сущность, ваш репозиторий должен также сохранить изменения в связанных объектах. ORM, такие как Entity Framework, обрабатывают это автоматически для вас.

...