Ich habe ein Domain-Modell, das das Konzept eines Editor und ein Projekt.
Ein Editor besitzt eine Reihe von Projekten, und ein Projekt hat nicht nur einen Editor Besitzer, sondern auch eine Reihe von Editor Mitgliedern. Daher hat ein Editor auch eine Reihe von „verbunden“ Projekten.
Ich nehme einen DDD Ansatz, dies zu modellieren und das Repository-Muster für die Persistenz verwendet wird. Aber ich grok das Muster nicht gut genug, um noch zu bestimmen, wie ich sollte dies tun.
Ich arbeite auf der Annahme, dass Editor und Projekt ist potenziell in dem gleichen Aggregate, mit der Wurzel zu sein Editor. Ich kann daher einen Editor und dann seine Projekte aufzählen, und von dort konnte der Projekte Mitglied Editors aufzuzählen.
wenn ich jedoch nur, ich darf Redakteure aus meinem Repository abrufen, nicht das, dass ich aus dem Repository alle Projekte zu laden, wenn ich den Editor bekommen, die sie besitzt? Und wenn ich die Mitglied Redakteure zu faul Last will, muss das Projekt eine Referenz als auch auf das Repository?
Alternativ kann, wenn ich das Aggregat geteilt und eine Editor-Repository und eine Projekt-Repository, wie soll ich umgehen, eine Transaktion über die beide, wie wenn ein neues Projekt zu einem Editor hinzugefügt wird? Beispielsweise:
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
Bin ich falsch interpretiert die Absicht des Repository-Muster?