Imaginons que nous ayons un service qui appelle un processus métier. Ce processus fera appel à la couche de données pour créer un objet de type A dans la base de données.
Ensuite, nous devons appeler à nouveau sur une autre classe de la couche de données pour créer une instance de type B dans la base de données. Nous devons transmettre des informations sur A pour une clé étrangère.
Dans la première méthode, nous créons un objet (modifier l'état) et renvoyons son ID (requête) dans une seule méthode.
Dans la deuxième méthode, nous avons deux méthodes, une (createA) pour la sauvegarde et l'autre (getId) pour la requête.
public void FirstMethod(Info info)
{
var id = firstRepository.createA(info);
secondRepository.createB(id);
}
public void SecondMethod(Info info)
{
firstRepository.createA(info);
var key = firstRepository.getID(info);
secondRepository.createB(key);
}
D'après ma compréhension, la deuxième méthode suit plus complètement la séparation des requêtes de commande. Mais je trouve inutile et contre-intuitif d'interroger la base de données pour obtenir l'objet que nous venons de créer.
Comment conciliez-vous CQS avec un tel scénario?
Seule la deuxième méthode suit-elle le CQS et dans l'affirmative, est-il préférable de l'utiliser dans ce cas?