Aquí hay un pequeño problema
Tener una entidad, con un objeto de valor. No es un problema. Reemplazo un objeto de valor por uno nuevo, luego nhibernate inserta el nuevo valor y deja huérfano al antiguo, luego lo elimina. Ok, eso es un problema
Asegurado es mi entidad en mi dominio. Tiene una colección de direcciones (objetos de valor). Una de las direcciones es MailingAddress. Cuando queremos actualizar la dirección de correo, digamos que el código postal era incorrecto, siguiendo la doctrina del Sr. Evans, debemos reemplazar el objeto antiguo por uno nuevo ya que es inmutable (¿un objeto de valor correcto?).
Pero no queremos eliminar la fila, porque la PK de esa dirección es un FK en una tabla MailingHistory. Entonces, siguiendo la doctrina del Sr. Evans, estamos bastante jodidos aquí. A menos que haga mis Entidades de direcciones, así que no tengo que "reemplazarlo", y simplemente actualizar su miembro de código postal, como en los viejos tiempos.
¿Qué me sugerirías en este caso? A mi modo de ver, ValueObjects solo son útiles cuando desea encapsular un grupo de columnas de la tabla de la base de datos (componente en nhibernate). Todo lo que tenga una identificación de persistencia en la base de datos, es mejor convertirlo en una Entidad (no necesariamente una raíz agregada) para que pueda actualizar sus miembros sin recrear todo el gráfico del objeto, especialmente si es un objeto anidado profundamente.
¿Está de acuerdo? ¿Está permitido por el Sr. Evans tener un objeto de valor mutable? ¿O es un objeto de valor mutable un candidato para una Entidad?
Gracias