Bir iş sürecini çağıran bir hizmetimiz olduğunu varsayalım. Bu işlem, veri katmanını veritabanında A tipi bir nesne oluşturmak için çağırır.
Daha sonra veritabanında B tipi bir örnek oluşturmak için veri katmanının başka bir sınıfını tekrar çağırmamız gerekir. Yabancı anahtar için A hakkında bazı bilgiler vermemiz gerekiyor.
İlk yöntemde, bir nesne (durumu değiştir) oluşturur ve bu nesnenin kimliğini (sorgu) tek bir yöntemle döndürürüz.
İkinci yöntemde, biri kaydetme için diğeri (getId) ve sorgu için iki yöntem bulunur.
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);
}
Anladığım kadarıyla, ikinci yöntem komut sorgusu ayırmayı daha tam olarak izler. Ama yeni oluşturduğumuz nesneyi almak için veritabanını sorgulamak için savurgan ve karşı-sezgisel buluyorum.
CQS ile böyle bir senaryoyu nasıl uzlaştırıyorsunuz?
Sadece ikinci yöntem CQS'yi takip ediyor mu ve eğer öyleyse bu durumda kullanılması tercih edilir mi?