Mari kita berpura-pura memiliki layanan yang memanggil proses bisnis. Proses ini akan memanggil lapisan data untuk membuat objek tipe A dalam database.
Setelah itu kita perlu memanggil lagi pada kelas lain dari lapisan data untuk membuat turunan dari tipe B dalam database. Kami perlu menyampaikan beberapa informasi tentang A untuk kunci asing.
Pada metode pertama kita membuat objek (mengubah keadaan) dan mengembalikan ID (kueri) dalam satu metode.
Dalam metode kedua kami memiliki dua metode, satu (createA) untuk menyimpan dan yang lainnya (getId) untuk kueri.
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);
}
Dari pemahaman saya metode kedua mengikuti pemisahan permintaan perintah lebih lengkap. Tapi saya merasa boros dan kontra-intuitif untuk meminta database untuk mendapatkan objek yang baru saja kita buat.
Bagaimana Anda mendamaikan CQS dengan skenario seperti itu?
Apakah hanya metode kedua yang mengikuti CQS dan jika demikian, apakah lebih baik untuk menggunakannya dalam kasus ini?