ビジネスプロセスを呼び出すサービスがあるとします。このプロセスは、データレイヤーを呼び出して、データベースにタイプAのオブジェクトを作成します。
その後、データレイヤーの別のクラスを再度呼び出して、データベースにタイプBのインスタンスを作成する必要があります。外部キーのAに関する情報を渡す必要があります。
最初のメソッドでは、オブジェクトを作成(状態の変更)し、1つのメソッドでそのID(クエリ)を返します。
2番目のメソッドには、保存用の1つ(createA)とクエリ用の2つ(getId)の2つのメソッドがあります。
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);
}
私の理解から、2番目の方法は、コマンドクエリの分離に完全に従います。しかし、作成したばかりのオブジェクトを取得するためにデータベースを照会するのは無駄で直観に反すると思います。
このようなシナリオでCQSをどのように調整しますか?
CQSに続くのは2番目の方法だけですか?その場合は、この場合に使用するのが望ましいですか?