Diciamo che ho un POCO in questo modo:Devo inserire la logica di validazione in un POCO?
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
FirstName e cognome non può essere NULL. Dovrei aggiungo in un metodo come questo:
public List<Error> Validate()
{
var errors = new List<Error>();
if (String.IsNullOrEmpty(FirstName))
errors.Add(new Error("FirstName", "You must fill out first name."));
if (String.IsNullOrEmpty(LastName))
errors.Add(new Error("LastName", "You must fill out last name."));
}
dove Error
è una struct che contiene un NameValueDictionary
. È un buon modo di fare le cose? Posso potenzialmente vedere un problema con il repository dove qualcuno tenta di salvare questo POCO senza eseguirlo prima tramite Validate()
.
Ho esaminato xVal in precedenza ma ho trovato una netta mancanza di documentazione ed esempi. Forse lo esaminerò di nuovo ora che sto usando POCO. –
Ora che ci penso, come gestiresti i casi in cui hai bisogno di una convalida più avanzata, ad esempio convalidi che una stringa del percorso di file punta a un file fisico sul disco rigido? –
xVal consente di creare attributi di convalida personalizzati. Ecco una pagina di esempio: http://blog.codeville.net/2009/02/27/xval-08-beta-now-released/ – womp