Powiedzmy mam poco tak:Czy powinienem umieścić logikę walidacji w POCO?
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Imię i Nazwisko nie może być null. Dodam w metodzie tak:
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."));
}
gdzie Error
to struktura, która zawiera NameValueDictionary
. Czy to dobry sposób robienia rzeczy? Mogę potencjalnie zobaczyć problem z repozytorium, w którym ktoś próbuje zapisać to POCO bez uruchamiania go najpierw przez Validate()
.
Zajrzałem do xVal wcześniej, ale znalazłem wyraźny brak dokumentacji i przykładów. Być może zajrzę do tego jeszcze raz, gdy używam POCO. –
Teraz, kiedy o tym myślę, w jaki sposób poradzisz sobie z przypadkami, w których potrzebujesz bardziej zaawansowanej weryfikacji, na przykład sprawdzając, czy ciąg ścieżki pliku wskazuje na fizyczny plik na dysku twardym? –
xVal pozwala tworzyć niestandardowe atrybuty sprawdzania poprawności. Oto przykładowa strona: http://blog.codeville.net/2009/02/27/xval-08-beta-now-released/ – womp