Usamos Data Annotation para validação de dados dos nossos Models, além disso, definem regras de requisitos de bancos de dados e outras configurações de mapeamento diretamente no código do modelo. Ao colocar os decoradores antes do atributo desejado, é adicionado um comportamento que permite o .NET runtime executar esses processamentos adicionais que possibilitam a validação dos campos, propriedades e classes.
public class Order
{
[Key]
public int OrderID { get; set; }
[Required(ErrorMessage = "CustomerName is required")]
[StringLength(100, ErrorMessage = "CustomerName cannot be longer than 100 characters")]
public string CustomerName { get; set; }
[RegularExpression(@"^\d+.?\d{0,2}$", ErrorMessage = "Invalid total")]
[Range(1, 500, ErrorMessage = "Total must be between 1 and 500")]
public decimal Total { get; set; }
}
[Key] é colocada na propriedade OrderID, que marca como identificador único[Required] e [StringLength] colocada na propriedade CustomerName garante que o campo não fique vazio e que não ultrapasse 100 caracteres.[RegualarExpression] e [Range] no campo Total força uma validação específica de númerosVantagens
Desvantagens
model) difícil de manter. Todas as regras de validação e mapeamento são embutidas no modelo, o que pode dificultar a manutenção e evolução do código.