Vous devez disposer d'un référentiel pour chaque racine agrégée.
Je n'ai aucune connaissance de votre domaine-modèle, mais il ne me semble pas naturel d'avoir un IAddressRepository. Sauf si "Adresse" est une racine agrégée dans votre domaine.
En fait, dans la plupart des cas, 'Address' n'est même pas une entité, mais un objet de valeur. C'est-à-dire que, dans la plupart des cas, l'identité d'une "adresse" est déterminée par sa valeur (la valeur de toutes ses propriétés); il n'a pas de champ 'Id' (clé) séparé.
Ainsi, lorsque c'est le cas, CustomerRepository devrait être responsable du stockage de l'adresse, étant donné que l'adresse fait partie de la racine d'agrégat du client.
Modifier (ok si votre situation était juste un exemple):
Mais, si vous avez d'autres situations où vous auriez besoin un autre dépôt dans un dépôt, alors je pense qu'il est préférable de supprimer cette fonctionnalité hors de ce référentiel, et le mettre dans une classe distincte (Service). Je veux dire: je pense que si vous avez des fonctionnalités dans un référentiel A qui repose sur un autre référentiel B, alors ce type de fonctionnalité n'appartient pas au référentiel A.
A la place, écrivez une autre classe (appelée Service dans DDD), dans lequel vous implémentez cette fonctionnalité.
De toute façon, je ne pense pas que les dépôts devraient vraiment s'appeler. Si vous ne voulez pas écrire un Service, et si vous voulez vraiment garder cette logique dans le dépôt lui-même, passez l'autre dépôt comme argument dans cette méthode spécifique.
J'espère que je me suis fait un peu clair. : P
Merci, une classe de service devrait faire l'affaire. – Paul