У меня есть модель предметной области, которая имеет понятие редактора и проект.
Редактор имеет ряд проектов, и проект имеет не только владелец редактора, но и ряд членов редакторов. Таким образом, редактор также имеет ряд «присоединившиеся» проекты.
Я беру подход DDD для моделирования этого и используя Repository шаблон для персистенции. Тем не менее, я не обращал внимания на рисунок достаточно хорошо еще, чтобы определить, как я должен это сделать.
Я работаю на предположении, что редактор и проекта являются потенциально в одной и той же совокупности, с корнем будучи редактором. Поэтому я могу получить редактор, а затем перечислить свои проекты, и может оттуда перечислить Editors участников проектов.
Однако, если я только позволил получить редактор из моего репозитория, разве это не означает, что я должен загрузить все проекты из хранилища, когда я получаю редактор, который владеет им? И если я хочу ленивую нагрузку на Editors членов, проект необходима ссылка на хранилище, а?
С другой стороны, если я разделить совокупность и есть репозиторий редактора и репозиторий проекта, как я должен обрабатывать транзакции через два, например, когда новый проект добавляется в редакторе? Например:
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
Могу ли я искажая намерение Repository шаблона?