Ich habe ein Domänenmodell, das das Konzept eines Editors und eines Projekts hat.Repository-Muster: wie zur Lazy Load? oder, Sollte ich dieses Aggregat teilen?
Ein Editor besitzt eine Reihe von Projekten, und ein Projekt hat nicht nur einen Editorbesitzer, sondern auch eine Reihe von Editormitgliedern. Daher hat ein Editor auch eine Anzahl von "verbundenen" Projekten.
Ich nehme einen DDD-Ansatz, um dies zu modellieren und das Repository-Muster für die Persistenz zu verwenden. Allerdings bin ich nicht gut genug, um zu bestimmen, wie ich das machen soll.
Ich arbeite unter der Annahme, dass Editor und Projekt möglicherweise in der gleichen Aggregat sind, mit der Wurzel Editor. Ich kann also einen Editor bekommen und dann seine Projekte aufzählen und von dort aus die Mitglieder des Projects-Members aufzählen.
Wenn ich jedoch nur Editoren aus meinem Repository abrufen darf, heißt das nicht, dass ich alle Projekte aus dem Repository laden muss, wenn ich den Editor erhalte, der sie besitzt? Und wenn ich die Member-Editoren lazy laden möchte, benötigt das Projekt auch einen Verweis auf das Repository?
Alternativ, wenn ich das Aggregat aufteilen und ein Editor-Repository und ein Projekt-Repository habe, wie sollte ich eine Transaktion zwischen den beiden behandeln, etwa wenn ein neues Projekt einem Editor hinzugefügt wird? Zum Beispiel:
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
Am falsch interpretiere ich die Absicht der Repository-Muster?
Vielleicht möchten Sie einen Blick auf meine verwandte Frage werfen: http://StackOverflow.com/q/20820302/253098 – SystematicFrank