2010-07-13 2 views
2

Si vous avez un contact, avec une relation 1: * avec les adresses, et éventuellement une ou plusieurs autres tables utilisées pour contenir les objets de valeur persistante - combien de référentiels devraient-il y avoir?Modèle de référentiel: Combien de référentiels sont nécessaires pour obtenir un contact avec deux adresses?

Devrait-il y avoir un seul ContactRepository avec une méthode publique (GetContact(), qui appelle en interne une méthode privée (GetAddresses)) qui retourne une entité complètement hydratée (Contact + Addreses)?

Ou devrait-il y avoir deux référentiels - un pour les contacts, un pour les adresses avec le COntactsRepository appelant le AddressRepository?

Ou autre?

Merci!

+0

BTW: Les raisons que je demande est que ... si tous regroupés ensemble, avec de grands arbres d'objets, nous arrivons bientôt à de mauvaises classes de Dieu. D'autre part, si elle est séparée, comment obtient-on efficacement tous les contacts qui ont une adresse sur Mulberry road? Une autre option est de considérer une classe Repository + helper pour la décomposer un peu ... mais il y a encore du cross over (l'exemple de Mulberry) que je ne sais pas où mettre. Aide! – Ciel

Répondre

0

Est-ce que autre chose qu'un contact peut avoir une adresse?

Sinon, je penserais probablement à avoir juste un ContactRepository.

S'il existe également des entités comme Orders, Events, etc., qui ont des adresses, je pense à un AddressRepository séparé. Votre exemple Mulberry road/drive implique que vous ne voulez qu'un seul enregistrement d'adresse pour "123 Mulberry Rd", quel que soit le nombre de Contacts ayant cette adresse, ce qui pourrait bien créer plus d'élan pour faire un AddressRepository.

+0

Tim. Merci beaucoup. Je pense que vous avez frappé sur le clou que c'est une question de besoin plus que tout. Je pense que la décision à prendre est ce qui est nécessaire du point de vue du domaine: Actuellement, le domaine ne traite que des entités de contact. Jusqu'à ce que le DOMAIN commence à parler aussi bien dans les Adresses (en tant qu'objets Entity dans leur propre droit, et non dans les Types de Valeur), il n'a besoin que de sa propre classe AddressTable (pour des raisons SOP) sans avoir à être exposé comme un référentiel complet. Merci. – Ciel

Questions connexes