चलो दिखावा करते हैं हमारे पास एक सेवा है जो एक व्यवसाय प्रक्रिया को बुलाती है। यह प्रक्रिया डेटाबेस में टाइप ए की वस्तु बनाने के लिए डेटा लेयर पर कॉल करेगी।
बाद में हमें डेटाबेस में टाइप बी का एक उदाहरण बनाने के लिए डेटा परत के दूसरे वर्ग पर फिर से कॉल करने की आवश्यकता है। हमें विदेशी कुंजी के लिए ए के बारे में कुछ जानकारी पारित करने की आवश्यकता है।
पहली विधि में हम एक ऑब्जेक्ट बनाते हैं (राज्य को संशोधित करते हैं) और एक ही विधि में यह आईडी (क्वेरी) लौटाते हैं।
दूसरी विधि में हमारे पास दो तरीके हैं, एक (createA) सेव के लिए और दूसरा (getId) क्वेरी के लिए।
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);
}
मेरी समझ से दूसरा तरीका कमांड क्वेरी अलगाव को पूरी तरह से अलग करता है। लेकिन मुझे लगता है कि हमने अभी जो वस्तु बनाई है, उसे प्राप्त करने के लिए डेटाबेस को क्वेरी करना बेकार और जवाबी-सहज है।
आप ऐसे परिदृश्य के साथ CQS को कैसे सामंजस्य स्थापित करते हैं?
क्या केवल दूसरी विधि CQS का अनुसरण करती है और यदि ऐसा है तो क्या इस मामले में इसका उपयोग करना बेहतर है?