Eu tenho um modelo de domínio que tem o conceito de um editor e um projeto.
Um editor possui uma série de projetos, e um projeto não só tem um proprietário Editor, mas também um número de membros do editor. Portanto, um editor também tem uma série de projetos unidas.
Estou tomando uma abordagem DDD para modelar isto e usando o padrão Repository para persistência. No entanto, eu não grok o padrão bem o suficiente ainda para determinar como eu deveria fazer isso.
Eu estou trabalhando com a suposição de que o Editor e Projeto são potencialmente no mesmo agregado, com a estar Editor de raiz. Posso, portanto, obter um editor e, em seguida, enumerar seus projetos, e pode de lá enumerar Editores membros os projectos.
No entanto, se eu só estou autorizado a recuperar Editores do meu repositório, não que isso significa que eu tenho que carregar todos os projetos do repositório quando eu chegar o Editor de que as possui? E se eu quiser carga preguiçoso Editores membros, o projeto precisa de uma referência para o repositório também?
Alternativamente, se eu dividir o agregado e ter um repositório Editor e um repositório do projeto, como devo lidar com uma transação em toda a dois, como quando um novo projeto é adicionado a um editor? Por exemplo:
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
Estou interpretando mal a intenção do repositório padrão?