[EntLib 5.0 Validation Block] Validación encadenada de entidades
Una de las cosas que nos ofrece el Validation Block es la posibilidad de validar entidades que a su vez tienen entidades con validaciones que a su vez… vamos una validación encadenada y que es facilmente configurable a través de los siguientes atributos:
- ObjectValidator –> Una entidad
- ObjectValidatorCollection –> Una colección de entidades
Y como no, lo mejor es ver un ejemplo sencillo:
namespace ConsoleApplicationValidation
{
class Order
{
public Guid Id { get; set; }
[ObjectCollectionValidator]
public List<OrderDetail> OrderDetails { get; set; }
}
class OrderDetail
{
public Guid Id { get; set; }
[StringLengthValidator(1,100)]
public string Description { get; set; }
}
class Program
{
static void Main(string[] args)
{
Order order = new Order
{
OrderDetails = new List<OrderDetail>
{
new OrderDetail{
Id = Guid.NewGuid()
}
}
};
Validator validator = ValidationFactory.CreateValidator<Order>();
ValidationResults results = validator.Validate(order);
Console.WriteLine(results.Count > 0 ? "Not Valid" : "Valid");
Console.Read();
}
}
}
Lo ejecutamos:
Para que sea válida la entidad Order, nuestras entidades OrderDetail deben tener una descripción con longitud comprendida entre 1 y 100:
Order order = new Order
{
OrderDetails = new List<OrderDetail>
{
new OrderDetail{
Id = Guid.NewGuid(),
Description = "OrderDetail1"
}
}
};

Intentaré escribir algún artículo con validaciones más complejas :)
Un saludo