Sto usando DDD e NHibernate per mantenere il mio oggetto dominio. Nel mio database ogni tabella correlata a un'entità ha quattro colonne aggiuntive (CreatedBy, UpdatedBy, CreatedDate, UpdatedDate) utilizzate per il tracciamento del controllo. Sto usando il modello di repository che consente di salvare solo le root aggregate. Quando NHibernate tenta di salvare le entità sulla radice aggregata, ottengo un errore SQL DateTime perché le entità non hanno le loro proprietà di controllo impostate. C'è un modo in NHibernate per impostare le proprietà sugli oggetti prima del salvataggio?NHibernate imposta automaticamente le proprietà al salvataggio
Ecco un piccolo esempio. Ho un oggetto Order che è la radice aggregata. Ho anche oggetti OrderNote che sono figli dell'ordine. Quando aggiungo un OrderNote all'Ordine e quindi salvo l'Ordine, viene generata un'eccezione perché CreatedDate/UpdatedDate è impostato su DateTime.MinValue che causerà un overflow SQL DateTime. Poiché queste colonne di controllo fanno parte della persistenza e non sono correlate al dominio del problema, non desidero che la radice di aggregazione degli ordini imposti queste proprietà quando viene aggiunta la nota. Le colonne/proprietà di controllo dovrebbero essere conosciute solo dal framework di persistenza e non dal dominio. Vorrei poter dire a NHibernate di impostare queste proprietà durante il salvataggio o l'aggiornamento. C'è un modo per fare questo?
Grande. Questo è esattamente quello che sto cercando. Sono nuovo di NHibernate e non ero a conoscenza di questa funzionalità. Ho un'interfaccia IAuditable implementata con proprietà protette in modo che il dominio non possa vederle. – awilinsk