2012-02-22 2 views
0

Je reçois StudentDriver comme racine agrégée. Chaque StudentDriver peut avoir plusieurs DrivingLogs et chaque DrivingLog peut contenir plusieurs DrivingRecords.Comment imbriquer des entités dans DDD

Comme ils sont connectés les uns aux autres, je pense que c'est juste. Cependant, je ne comprends pas si je vais ajouter un nouvel enregistrement de conduite par exemple. Est-ce que j'appelle studentdriver.addNewDrivingRecordToDrivingLog (...) ou est-ce que je reçois d'abord un journal de conduite de l'utilisateur, puis j'ajoute le driverecord à ceci. Je veux dire, les noms des méthodes deviennent très longs et je ne comprends pas comment vous êtes censé accéder aux éléments.

Quelqu'un pourrait-il expliquer comment vous êtes censé interagir avec les membres de StudentDriver, et même si cet agrégat est correct?

Répondre

1

Est-ce que j'appelle studentdriver.addNewDrivingRecordToDrivingLog (...) ou dois-je obtenir un premier drivinglog de l'utilisateur, puis ajoutez le drivingrecord à ce sujet. Je veux dire, les noms des méthodes deviennent très longs et je ne comprends pas comment vous êtes censé accéder aux éléments.

On dirait obtenir par exemple DrivingLog, puis en ajoutant enregistrement à ce serait mieux, mais cela semble vraiment être sur ces choses que vous devez figurer sur votre propre parce que nous ne savons pas assez sur vous domaine. Les deux approches ne violent aucune règle DDD. Essayez-en un et changez-le plus tard si vous ne l'aimez pas (c'est-à-dire que le code sent, les tests sont durs, etc.). Le code DDD devrait être continuellement amélioré avec votre compréhension du domaine. Il n'y a vraiment pas de vrai ou de faux dans cette situation.

+0

Donc, il n'y a rien de mal à se procurer des entites etc à l'intérieur d'une racine agrégée tant que les autres racines agrégées ne les ont pas? Par exemple, mettre les entités ensemble hors de la racine agrégée n'est pas mauvais? – LuckyLuke

+0

Je veux dire, puisque le StudentDriver est la racine agrégée, il n'est pas mauvais de construire le drivelog en dehors du pilote student et d'ajouter directement les driverecords sur le drivinglog, puis d'attacher les pilotlogs à l'utilisateur avant qu'il ne soit persisté etc throguh the repository? Lorsque vous avez des agrégats, cela ne signifie pas que vous ne pouvez toujours pas accéder à des choses à l'intérieur? – LuckyLuke

+0

Et une dernière chose: lorsque vous ajoutez par exemple un roadlog à un conducteur d'étudiant, alors vous devez mettre à jour le pilote d'étudiant dans le dépôt, n'est-ce pas? Vous n'avez pas de référentiels propres pour les entités dans les agrégats? Donc, chaque fois que quelque chose dans les changements agrégés studentdriver vous devez "mettre à jour" le pilote d'étudiant? – LuckyLuke

Questions connexes