Si un agrégat doit interroger le modèle de lecture pour effectuer la validation des règles, la façon habituelle de le faire est via un service de domaine - vous passez au service une interface qui spécifie le contrat de la requête, l'implémentation de ce contrat exécute la requête.
Mais vous devez rester conscient du fait que la réponse que vous obtenez en exécutant la requête est ancienne; les données stockées dans un autre agrégat ne peuvent pas être considérées comme "à jour".
Vous devriez également vérifier vos besoins; Dans de nombreux domaines, il est souhaitable d'accepter des commandes même si l'inventaire n'est pas disponible actuellement. Après tout, la commande est une opportunité d'ajouter de la valeur commerciale; vous ne voulez pas opposer votre veto à une préoccupation qui n'est pas pertinente. Cela est particulièrement vrai lorsque l'entreprise comprend déjà comment atténuer une exception «en rupture de stock». Rappelez-vous que les données des autres agrégats sont périmées. Il est tout à fait possible qu'une autre partie du système mette actuellement à jour les niveaux de stock afin que vous puissiez accepter la commande. Si vous ne pouvez pas relâcher les exigences de validation des commandes lorsque le stock n'est pas disponible et si le taux d'erreur lié à l'utilisation des données de requête obsolètes est trop élevé, vous devez redéfinir vos agrégats afin que le niveau de stock actuel soit dans la même limite de cohérence que l'ordre de validation.
Les commandes peuvent exécuter des requêtes mais les requêtes ne peuvent pas exécuter les commandes – CSharper