У меня есть модель домена, которая имеет концепцию редактора и проекта.
Редактор владеет несколькими проектами, а проект имеет не только владельца Редактора, но и ряд членов Редактора. Поэтому редактор также имеет ряд "присоединенных" проектов.
Я использую DDD-подход для моделирования этого и использования шаблона Repository для сохранения. Тем не менее, я недостаточно хорошо разбираюсь в шаблоне, чтобы определить, как я должен это делать.
Я работаю над предположением, что редактор и проект потенциально находятся в одной и той же совокупности, причем корень является редактором. Поэтому я могу получить Редактор, а затем перечислить его Проекты, и теперь можно перечислить Редакторы проектов.
Однако, если мне разрешено извлекать Редакторов из моего репозитория, разве это не означает, что мне нужно загрузить все проекты из репозитория, когда я получу редактор, который им владеет? И если я хочу ленить загрузку редакторов-членов, проекту также нужна ссылка на репозиторий?
В качестве альтернативы, если я разделяю агрегат и имею репозиторий редактора и репозиторий Project, как мне обрабатывать транзакцию по двум, например, когда новый проект добавляется в редактор? Например:
Editor e = new Editor("Editor Name");
editorRepository.Add(e);
Project p = e.CreateProject("Project Name");
projectRepository.Add(p); // These two lines
editorRepository.Save(e); // should be atomic
Я неправильно интерпретирую намерение шаблона репозитория?