Nehmen wir an, wir haben einen Service, der einen Geschäftsprozess aufruft. Dieser Prozess ruft die Datenschicht auf, um ein Objekt vom Typ A in der Datenbank zu erstellen.
Anschließend müssen wir erneut eine andere Klasse der Datenschicht aufrufen, um eine Instanz des Typs B in der Datenbank zu erstellen. Wir müssen einige Informationen über A für einen Fremdschlüssel übergeben.
In der ersten Methode erstellen wir ein Objekt (Status ändern) und geben dessen ID (Abfrage) in einer einzigen Methode zurück.
In der zweiten Methode haben wir zwei Methoden, eine (createA) für das Speichern und die andere (getId) für die Abfrage.
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);
}
Nach meinem Verständnis folgt die zweite Methode der Befehlsabfragetrennung vollständiger. Aber ich finde es verschwenderisch und nicht intuitiv, die Datenbank abzufragen, um das Objekt zu erhalten, das wir gerade erstellt haben.
Wie vereinbaren Sie CQS mit einem solchen Szenario?
Folgt nur die zweite Methode CQS, und wenn ja, ist es in diesem Fall vorzuziehen, sie zu verwenden?