2009-07-13 9 views
2

Ist es in Ordnung, eine schreibgeschützte Sammlung von einem Aggregat zu erhalten, ohne die Stammwurzel zu durchlaufen, um sie zu erhalten? Mein Modell macht gerade jetzt etwas davon und ich frage mich, ob das ein akzeptables Design ist. DankUmgehen der Aggregatwurzel

Edit:

Hier ist ein Beispiel

Ich habe ein Aggregat Stammentität Useraccount und eine andere Aggregat Wurzel genannt Videos genannt. Benutzer können mehrere Geschäfte haben, in denen sie sich befinden, und Videotheken können viele Benutzer haben. Ein sehr einfaches Viele-zu-Viele, aber das liegt nicht daran, dass die Viele-zu-Viele-Bridge-Tabelle Statusinformationen enthält, also auch eine Entity sein muss. Also, ich habe eine Bridge-Entity namens UserVideoStores und es ist ein Kind des aggregierten Root-Videostores (one-to-many).

Jetzt, wenn ein Benutzer anmeldet, möchte ich nachsehen, welche VideoStores sie sind und diese Informationen zu ihnen anzeigen. Ich kann das leicht tun, indem ich die Entität UserAccount einen direkten (Eins-zu-Viele) Verweis auf das Kind, UserVideoStores, der aggregierten root VideoStores habe. Es scheint einfacher zu sein, dies zu tun, dann müssen Sie eine HQL-Abfrage verwenden und von der Unterseite des Diagramms nach oben suchen, um herauszufinden, in welchem ​​Speicher der Benutzer sich befindet.

Macht das Sinn?

Edit:

Nun kam ich mit einer Lösung bis zu meinem Modell sauberer zu machen. Ich habe nicht direkt an einige meiner Designs gedacht und ich habe gelernt, nHibernate ein bisschen besser zu benutzen, um mir eine Lösung zu bieten. Dank

+0

Können Sie ein Beispiel geben? – Paco

Antwort

2

Evans sagt: „Die Wurzel das einzige Mitglied des Aggregates ist, dass außerhalb Objekte Verweise auf halten erlaubt ....“ (S. 127)

Mein Verständnis ist, dass das Aggregat als eine Einheit erscheinen soll zu externen Objekten. Auch die Law of Demeter scheint zutreffen. Unterm Strich glaube ich nicht, dass es akzeptabel ist.

+0

Ja, du hast Recht. Ich habe mit diesem Design einige Gesetze gebrochen. Ich muss wahrscheinlich Evans DDD-Buch lesen. Es würde mir wahrscheinlich sehr helfen. Vielen Dank – CalebHC

2

Eigentlich hat Eric seine Meinung über die Strenge der Aggregate Root Rules geändert.
Er sagte vor kurzem etwas entlang der Linien von

„dude Chill out. Versuchen Sie, sich ein Mann aus Brechen der Regeln zu stoppen. Aber, hey, nicht selbst über sie verprügeln. DDD Geck rockt, aber brechen die Agg Regeln, wenn du wirklich musst. Ja, Frieden. "

See: "Eric Evans: Was ich über DDD seit dem Buch gelernt haben" http://dddcommunity.org/library/evans_2009_1