Here is a similar question Where to validate domain model rules that depend on database content?
Sto facendo questa nuova domanda perché ho più descrizioni e non voglio cambiare la domanda precedente menzionata sopra
Problema
Ho una radice aggregata del modulo con raccolta Campi. Sul mio modulo ho il metodo SetCustomField (fieldname, value). Ho anche proprietà predefinite nel modulo, ad es. DateOfBirth, FirstName e LastName.
public DateTime DateOfBirth
{
get { return _dob; }
set {
if(value > 2000)
throw new ArgumentException(null, "You must be 15 yrs old or more");
_dob = value;
}
}
Funziona quando si crea il modulo. Ma quando vuoi modificare o visualizzare il modulo, interviene anche la validazione. Ciò genera un'eccezione per i campi vuoti o con valori non validi, eventualmente modificati nel db o caricati da Excel. Il comportamento previsto è consentire la visualizzazione del modulo all'aggiornamento, in modo che l'amministratore possa correggere tali campi.
CQRS
Ho letto di CQRS ma finora non penso che risolverebbe questo problema. Se voglio modificare il modulo, la radice aggregata del modulo deve ancora essere caricata, modificata e aggiornata:
//repository needs to set the DateOfBirth here and throws exception
var form = repo.GetFormById(1);
form.DateOfBirth = "Some value";
repo.Save(form);
Poiché ho bisogno di ricostruire il modello, il modello di lettura CQRS potrebbe non essere di aiuto. Se devo usare CQRS, come ricostruiresti una radice di aggregazione dal modello di lettura?
Grazie per il tuo contributo.