สมมติว่าเรามีบริการที่เรียกกระบวนการทางธุรกิจ กระบวนการนี้จะเรียกใช้ในชั้นข้อมูลเพื่อสร้างวัตถุประเภท A ในฐานข้อมูล
หลังจากนั้นเราต้องเรียกอีกครั้งในคลาสข้อมูลอีกชั้นหนึ่งเพื่อสร้างอินสแตนซ์ของประเภท B ในฐานข้อมูล เราจำเป็นต้องส่งข้อมูลบางอย่างเกี่ยวกับ A สำหรับคีย์ต่างประเทศ
ในวิธีแรกเราสร้างวัตถุ (แก้ไขสถานะ) และคืนค่าเป็น ID (แบบสอบถาม) ในวิธีการเดียว
ในวิธีที่สองเรามีสองวิธีหนึ่ง (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 และถ้าเป็นเช่นนั้นจะดีกว่าที่จะใช้ในกรณีนี้?