Ecco un piccolo problema
Avere un'entità, con un oggetto valore. Non è un problema. Sostituisco un oggetto valore per uno nuovo, quindi nibisco inserisce il nuovo valore e orfano il vecchio, quindi lo elimina. Ok, questo è un problema.
Assicurato è la mia entità nel mio dominio. Ha una collezione di indirizzi (oggetti valore). Uno degli indirizzi è MailingAddress. Quando vogliamo aggiornare l'indirizzo postale, supponiamo che lo zipcode sia sbagliato, seguendo la dottrina di Evans, dobbiamo sostituire il vecchio oggetto con uno nuovo poiché è immutabile (un oggetto valore giusto?).
Ma non vogliamo eliminare la riga, perché il PK di quell'indirizzo è un FK in una tabella MailingHistory. Quindi, seguendo la dottrina del Sig. Evans, siamo praticamente fregati qui. A meno che non crei le Entità dei miei indirizzi, quindi non devo "sostituirli", e semplicemente aggiornare il suo codice di avviamento postale, come i vecchi bei giorni.
Che cosa mi suggeriresti in questo caso? Il modo in cui lo vedo, ValueObjects è utile solo quando si desidera incapsulare un gruppo di colonne della tabella del database (componente in nhibernate). Tutto ciò che ha un ID di persistenza nel database, è meglio renderlo un'entità (non necessariamente una radice aggregata) in modo da poter aggiornare i suoi membri senza ricreare l'intero grafo degli oggetti, specialmente se si tratta di un oggetto con nidificazione profonda.
Siete d'accordo? È consentito a Mr. Evans di avere un oggetto con valore mutabile? O è un oggetto valore mutabile candidato per un'entità?
Grazie