Skip to main content

Data annotation | CSharp

  • Data annotation | CSharp

📌 O que são Data Annotations?

Data Annotations são atributos usados em classes e propriedades para:

  • Validar dados (ex: [Required], [StringLength], [EmailAddress])
  • Controlar comportamento de mapeamento (Entity Framework)
  • Controlar exibição (UI, MVC)

Eles ficam acima de classes ou propriedades e influenciam validação e metadados.


📍 1. Como usar Data Annotations

✔ Exemplo básico

public class Usuario
{
[Required(ErrorMessage = "O nome é obrigatório")]
[StringLength(50, ErrorMessage = "O nome deve ter no máximo 50 caracteres")]
public string Nome { get; set; }

[EmailAddress(ErrorMessage = "E-mail inválido")]
[Required]
public string Email { get; set; }

[Range(18, 100, ErrorMessage = "Idade deve estar entre 18 e 100")]
public int Idade { get; set; }
}

📍 2. Principais Data Annotations

🔹 Validação

AtributoFunção
[Required]Campo obrigatório
[StringLength(x)]Tamanho máximo e mínimo da string
[MaxLength] / [MinLength]Tamanho máximo/mínimo
[Range(min, max)]Validação numérica
[EmailAddress]Valida formato de e-mail
[Phone]Valida telefone
[Url]Valida URLs
[RegularExpression]Expressão regular
[Compare]Compara com outra propriedade

📍 3. Como validar Data Annotations manualmente (C# puro)

using System.ComponentModel.DataAnnotations;

public List<ValidationResult> ValidarObjeto(object obj)
{
var resultados = new List<ValidationResult>();
var contexto = new ValidationContext(obj);

Validator.TryValidateObject(obj, contexto, resultados, true);

return resultados;
}

✔ Uso:

var usuario = new Usuario { Nome = "", Email = "errado", Idade = 15 };

var erros = ValidarObjeto(usuario);

foreach (var erro in erros)
{
Console.WriteLine(erro.ErrorMessage);
}

📍 4. Validação automática no ASP.NET Core

No ASP.NET Core MVC ou API, basta colocar Data Annotations no modelo: A validação acontece automaticamente.

Controller de exemplo:

[HttpPost]
public IActionResult Criar([FromBody] Usuario usuario)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);

return Ok("Usuário válido!");
}

A propriedade ModelState já contém os erros gerados pelas Data Annotations.


📍 5. Data Annotations no Entity Framework

Também podem controlar propriedades no banco de dados.

✔ Exemplos:

public class Produto
{
[Key]
public int Id { get; set; }

[Required]
[Column(TypeName = "varchar(100)")]
public string Nome { get; set; }

[Precision(18, 2)]
public decimal Preco { get; set; }
}

Anotações comuns no EF:

  • [Key]
  • [Column]
  • [Index] (dependendo da versão)
  • [Timestamp]
  • [ForeignKey]
  • [NotMapped]

📍 6. Criando Data Annotations personalizadas (Custom)

Exemplo: validar se a pessoa é maior de idade

public class MaiorIdadeAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value is DateTime dataNascimento)
{
return dataNascimento <= DateTime.Now.AddYears(-18);
}

return false;
}
}

Uso:

[MaiorIdade(ErrorMessage = "O usuário deve ser maior de idade")]
public DateTime DataNascimento { get; set; }

📍 7. Exibir mensagens personalizadas

[Required(ErrorMessage = "O nome é obrigatório")]
[StringLength(100, ErrorMessage = "Máximo de 100 caracteres")]
public string Nome { get; set; }