2009-05-25 8 views
0

Je suis novice dans le domaine des modèles de domaine, alors pardonnez-moi de poser une question élémentaire. Si un objet de domaine a une relation un-plusieurs avec un autre objet de domaine mais que la logique qui utilise le premier objet ne fonctionne qu'avec un sous-ensemble de ces objets liés aux objets, quelle est la meilleure façon d'exposer ce sous-ensemble? Par exemple, disons qu'une personne est liée à de nombreux ordres, mais qu'une logique externe doit examiner uniquement les ordres "Distribué" associés à une personne. La personne doit-elle posséder une propriété DispatchedOrders, ainsi que d'autres propriétés pour d'autres sous-ensembles (tels que CompletedOrders, etc.) ou s'agit-il d'une mauvaise conception? On suppose, pour des raisons de performance je ne peux pas filtrer les objets en mémoire et vous devez utiliser SQL pour retirer seulement le sous-ensemble, je suis intéressé par.Comment modéliser des sous-ensembles de relations inter-objets

Merci

Répondre

1

Si vous utilisez SQL pour trouver le jeu que vous êtes intéressé en, vous êtes dans un monde parfait. Les requêtes relationnelles consistent à trouver ce genre de chose. Trouvez la requête parfaite, puis déterminez simplement quelle est la classe des tuples résultantes, c'est-à-dire un objet pour chaque ligne de résultat, et traitez-les de manière appropriée.

Dans votre exemple, vous voulez un ensemble de "Commandes distribuées", quelle que soit l'information de personne nécessaire attachée à chacune.

0

Je pense que vous avez la bonne idée - DispatchedOrders me dirait précisément quelle collection d'objet vous me retournez. Comme Curt l'a dit, vous êtes bien placé car vous pouvez utiliser SQL/procédure stockée pour récupérer vos données. Une mise en garde - assurez-vous que le domaine correspond au processus métier et n'est pas une interpolation de votre compréhension de ce processus. C'est pourquoi une personne a la primauté sur un ordre et dans quel coin êtes-vous peint lorsque vous construisez d'autres objets. Un élément de ligne contient-il également un ordre, et cela entraîne-t-il un gonflement de l'objet? Les discussions avec votre client devraient aider à façonner la réponse.

Rob Conery de renommée SubSonic a un good discussion of these types of issues. Cela vaut la peine d'écouter.

Questions connexes