2009-07-13 5 views
2

Est-il acceptable d'obtenir une collection en lecture seule d'un agrégat sans passer par la racine pour l'obtenir? Mon modèle fait une partie de cela en ce moment et je me demandais si c'était un design acceptable. MerciContourner la racine agrégée

Edit:

Voici un exemple

J'ai une entité racine globale appelée UserAccount et une autre racine globale appelée VideoStore. Les utilisateurs peuvent avoir plusieurs magasins à part et les magasins vidéo peuvent avoir plusieurs utilisateurs. Un très souvent plusieurs-à-plusieurs, mais ce n'est pas parce que la table de pont many-to-many contient des informations d'état, donc elle doit aussi être une entité. Donc, j'ai une entité de pont appelée UserVideoStores et c'est un enfant de l'ensemble de la racine VideStore (un-à-plusieurs).

Désormais, lorsqu'un utilisateur se connecte, je souhaite rechercher les VideoStores auxquels il appartient et lui afficher ces informations. Je peux facilement le faire en faisant en sorte que l'entité UserAccount ait une référence directe (un-à-plusieurs) à l'enfant, UserVideoStores, de l'ensemble des VideoStores racine. Il semble plus facile de le faire, puis d'utiliser une requête HQL et de rechercher à partir du bas du graphique pour trouver les magasins dont l'utilisateur est séparé.

Est-ce que cela a du sens?

Edit:

Eh bien, je suis venu avec une solution pour faire mon propre modèle. Je ne pensais pas directement à certains de mes designs et j'ai appris à utiliser nHibernate un peu mieux pour m'aider à trouver une solution. Merci

+0

Pouvez-vous donner un exemple? – Paco

Répondre

2

Evans dit: « La racine est le seul membre de la somme qui sont autorisés en dehors des objets de contenir des références à ... » (p. 127)

Ma compréhension est que l'ensemble doit apparaître comme une unité aux objets extérieurs. En outre, le Law of Demeter semble s'appliquer. Bottom line, je ne pense pas que ce soit acceptable.

+0

Oui, vous avez raison. Je brisais certaines lois avec ce design. J'ai probablement besoin de lire le livre DDD d'Evan. Cela m'aiderait probablement beaucoup. Merci – CalebHC

2

En fait Eric a changé d'avis à propos de la rigueur des règles de base agrégées.
Il a récemment dit quelque chose le long des lignes de

« Chill out mec. Essayez de vous empêcher de briser l'homme des règles. Mais, bon, ne vous culpabilisez pas dessus. DDD roches mec, mais briser le Agg règles si tu en as vraiment besoin Ouais, paix. "

Voir: "Eric Evans: Ce que j'ai appris DDD depuis le livre" http://dddcommunity.org/library/evans_2009_1

Questions connexes