Saya menggunakan pendekatan seperti-DDD untuk modul greenfield dari aplikasi yang ada; itu bukan 100% DDD karena arsitektur tapi saya mencoba menggunakan beberapa konsep DDD. Saya memiliki konteks terbatas (saya pikir itu istilah yang tepat - saya masih belajar tentang DDD) yang terdiri dari dua Entitas: Conversationdan Message. Percakapan adalah root, karena Pesan tidak ada tanpa percakapan, dan semua pesan dalam sistem adalah bagian dari percakapan.
Saya memiliki ConversationRepositorykelas (walaupun sebenarnya lebih mirip Gateway, saya menggunakan istilah "Repositori") yang menemukan Percakapan dalam database; ketika menemukan Percakapan, ia juga membuat (melalui Pabrik) daftar pesan untuk Percakapan itu (diekspos sebagai properti). Ini tampaknya menjadi cara yang benar dalam menangani berbagai hal karena tampaknya tidak ada kebutuhan untuk kelas penuh MessageRepositorykarena hanya ada ketika Percakapan diambil.
Namun, ketika datang untuk menyimpan Pesan, apakah ini tanggung jawab dari ConversationRepository, karena ini adalah akar agregat dari Pesan? Apa yang saya maksud adalah, haruskah saya memiliki metode tentang ConversationRepository yang disebut, katakanlah, AddMessageyang mengambil pesan sebagai parameternya dan menyimpannya ke database? Atau haruskah saya memiliki repositori terpisah untuk menemukan / menyimpan Pesan? Hal yang logis tampaknya menjadi satu repositori per Entitas, tetapi saya juga pernah mendengar "Satu repositori per Konteks".