ค่าที่คำนวณได้และการอ่านอย่างง่าย - ความเจ็บปวดที่จู้จี้สำหรับการออกแบบโดเมนของฉัน!
ปัญหาที่ฉันเผชิญอย่างต่อเนื่องคือวิธีจัดการกับค่าที่คำนวณโดยตรรกะของโดเมนในขณะที่ยังทำงานได้อย่างมีประสิทธิภาพกับที่เก็บข้อมูล ตัวอย่าง: ฉันกำลังส่งคืนรายการผลิตภัณฑ์จากที่เก็บของฉันผ่านบริการ รายการนี้ถูก จำกัด โดยข้อมูลเลขหน้าจากคำขอ DTO ที่ส่งโดยลูกค้า นอกจากนี้ DTO ยังระบุพารามิเตอร์การเรียงลำดับ (enum ที่เหมาะกับลูกค้า) ในสถานการณ์ง่าย ๆ ทุกอย่างใช้งานได้ดี: บริการส่งเพจและเรียงลำดับนิพจน์ไปยัง repo และ repo ออกแบบสอบถามที่มีประสิทธิภาพไปยังฐานข้อมูล ทุกอย่างพังทลายลงมาเมื่อฉันต้องเรียงลำดับค่าที่สร้างขึ้นในหน่วยความจำจากโมเดลโดเมนของฉัน ตัวอย่างเช่นระดับสินค้ามีวิธี IsExpired () ที่ส่งกลับค่าบูลตามตรรกะทางธุรกิจ ตอนนี้ฉันไม่สามารถจัดเรียงและเพจที่ระดับ repo ได้ทุกอย่างจะต้องทำในหน่วยความจำ (ไม่มีประสิทธิภาพ) และบริการของฉันจะต้องทราบความซับซ้อนของเวลาที่จะออก params เหล่านี้ไปยัง repo และเมื่อทำการเรียงลำดับ / การเพจ ตัวเอง รูปแบบเดียวที่ดูเหมือนสมเหตุสมผลสำหรับฉันคือการจัดเก็บสถานะของเอนทิตีใน db (ทำให้ IsExpired () เป็นฟิลด์แบบอ่านอย่างเดียวและอัปเดตผ่านตรรกะโดเมนก่อนการบันทึก) ถ้าฉันแยกตรรกะนี้เป็นที่เก็บ "read model / dto" และ …