Шаблон репозитория - совокупный корень - PullRequest
1 голос
/ 30 июня 2011

Я пытаюсь понять, где корни агрегатов лежат в моей модели данных структуры сущностей, поэтому я знаю, какие репозитории мне нужно создать.

Если я буду говорить в терминах реляционной базы данных в течение секунды, у меня будет объект ExceptionGroup и объект Exception (не system.exception!). Исключение принадлежит ExceptionGroup и не может существовать без ExceptionGroup.

Должен ли я иметь репозиторий для каждого объекта или отдельный репозиторий, содержащий методы для обоих? Если бы у меня был один репозиторий, методы были бы следующими:

FindAllExceptionsByExceptionGroup(int GroupID)
AddExceptionGroup(ExceptionGroup ExceptionGroup) - because an exception cannot exist without a group.
AddException(DataAccess.Exception Exception)
DeleteExceptionGroupByID(int GroupID)
DeleteExceptionByID(int ExceptionID)
DeleteExceptionByGroup(int GroupID)

1 Ответ

2 голосов
/ 30 июня 2011

Если я правильно понимаю вашу модель, похоже, что у вас будет хранилище для ExceptionGroup, а объект ExceptionGroup будет инкапсулировать доступ и операции для Exception экземпляров (например, предоставляя их коллекцию) , Таким образом, принудительные отношения между двумя классами становятся очень очевидными.

У Джеффа Стернала отличный ответ на подобный вопрос: Что такое Совокупный корень? Его пример Order / LineItem кажется аналогичным.

...