Ini sedikit masalah
Memiliki entitas, dengan objek nilai. Bukan masalah. Saya mengganti objek nilai untuk yang baru, lalu nhibernate menyisipkan nilai baru dan yatim piatu yang lama, lalu menghapusnya. Ok, itu masalah.
Tertanggung adalah entitas saya di domain saya. Dia memiliki koleksi Alamat (objek nilai). Salah satu alamat adalah Alamat Mailing. Ketika kita ingin memperbarui alamat surat, misalkan kode pos salah, mengikuti doktrin Tn. Evans, kita harus mengganti objek lama dengan yang baru karena tidak dapat diubah (objek nilai kan?).
Tapi kami tidak ingin menghapus baris Anda, karena PK alamat itu adalah FK di tabel MailingHistory. Jadi, mengikuti doktrin Tn. Evans, kita benar-benar kacau disini. Kecuali saya membuat Entitas addressses saya, jadi saya tidak perlu "menggantinya", dan cukup perbarui anggota kode posnya, seperti masa lalu yang baik.
Apa yang akan Anda sarankan untuk saya dalam kasus ini? Cara saya melihatnya, ValueObjects hanya berguna ketika Anda ingin merangkum sekelompok kolom tabel database (komponen dalam nhibernate). Segala sesuatu yang memiliki id kegigihan dalam database, lebih baik membuatnya menjadi Entity (tidak harus merupakan agregat root) sehingga Anda dapat memperbarui anggotanya tanpa membuat ulang seluruh objek grafik, terutama jika itu objek bersarang.
Apakah Anda setuju? Apakah diizinkan oleh Tn. Evans untuk memiliki objek nilai yang dapat berubah? Atau objek nilai yang bisa berubah kandidat untuk Entitas?
Terima kasih