Entity Framework Validations - Validação de modelos

Nesta aula iremos aprender como fazer validações de modelos no Entity Framework (Required, Range, RegularExpression, MaxLength)

assinaturaAssine nossa Comunidade

Entity Framework- Validation

Hoje iremos falar sobre algumas validações que precisamos fazer nos nossos modelos, em aplicações console, windows ou Web.

Existem dois tipos de validações que podem ser no Front-end e no Back-end. Se estivermos construindo uma aplicação web devemos fazer validações tanto em front-end quanto em Back-end, pois, existem pessoas que podem desabilitar o JavaScript dos browsers, ou podem existir sistemas que utilizam browser que o javascript não funciona.

No ORM Entity Framework iremos utilizar validações diretamente no código. Caso as validações não sejam respeitadas o sistema emitirá mensagens de erro. Abaixo seguem algumas validações:

  • REQUIRED;
  • MAXLENGTH;
  • REGULAR EXPRESSION;
  • RANGE.

REQUIRED

A validação / assinatura REQUIRED necessita que a propriedade seja preenchida, validando somente a presença.

MAXLENGTH

A validação / assinatura MAXLENGTH limita a quantidade de caracteres na propriedade. Exemplo: a propriedade permitirá que até 100 caracteres sejam digitados.

RANGE

A validação / assinatura RANGE restringe a propriedade limitando com um valor inicial e um valor final. Exemplo: a propriedade ano aceita valores de 1983 até 2045

REGULAR EXPRESSION;

É uma linguagem para tratar validações referente a textos. Exemplo, podemos validar se a propriedade é um email, site, CEP, se foi digitada a formatação de CPF, etc. Regular Expression faz um formato de validação.

Vamos continuar utilizando modelo que criamos na aula 72 e iremos adicionar no DbContext mais um model, que é o de Cliente:

      
        namespace Relacionamento
        {
          class BaseContext: DBContext
          {
            public BaseContext(): base("Relacionamento") { }
            public DbSet< Modelo> Modelos {get;set;}
            public DbSet< Cliente> Clientes {get;set;}
          }          
        }
       
    

Vamos utilizar as validações Required, MaxLength, Regular Expression e Range.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            [Key()]
            public int Id { get;set; }
            
            [Required]
            [MaxLength(50, ErrorMessage = "Nome muito grande")]
            [RegularExpression(@"santos", ErrorMessage = "Nome precisa ter santos")]
            public string Nome { get;set; }


            [Required]
            [RegularExpression(@"([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})", ErrorMessage = "CPF precisa estar no formato correto.")]
            public string CPF { get;set; }

            
            [Range(2000,2025), ErrorMessage = "Não aceito pessoas que nasceram antes dos anos 2000")]
            public int AnoNascimento { get;set; }

          }

          }
        }
       
    

Iremos adicionar o método que lista Clientes.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public List< Cliente> Todos() 
            {
              var db = new BaseContext();
              return db.Clientes.ToList();
            }
  
          }
        }
       
    

Vamos adicionar o método Salvar na classe Cliente.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public void Salvar() 
            {
              var db = new BaseContext();
              db.Clientes.Add(this);
              db.SaveChanges();
            }
          }
        }
       
    

Para tratar mensagens de erro, dentro do método Salvar, incluiremos o try catch no método Salvar().

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public void Salvar() 
            {
              try 
              {
                var db = new BaseContext();
                db.Clientes.Add(this);
                db.SaveChanges();
              }
              catch(DbEntityValidationException erro)
              {
                var mensagens = string.Empty; 
                foreach(var verr in erro.EntityValidationErrors)
                {
                  foreach(var ve in verr.ValidationErrors)
                  {
                      mensagens += "Campo:" + ve.PropertyName + " -Erro: " + ve.ErrorMessage + ", ";
                  }
                }
                throw new Exception(mensagens);
              }
            }
          }
        }
       
    

Vamos criar um objeto cliente através do programa principal e verificar que o sistema vai emitir uma mensagem de erro, pois o CPF e o ano foram digitados incorretamente:

      
        namespace Relacionamento  
          class Program 
          {
            static void Main(string[] args)
            {
              
              new Cliente() { Nome="Danilo", AnoNascimento = 1983, CPF = "333.555.66-77"}.Salvar();
  
            }
          }
       
    

Entity Framework Validations - Validação de modelos

Nesta aula iremos aprender como fazer validações de modelos no Entity Framework (Required, Range, RegularExpression, MaxLength)

Próximas Aulas:
assinaturaAssine nossa Comunidade

Entity Framework- Validation

Hoje iremos falar sobre algumas validações que precisamos fazer nos nossos modelos, em aplicações console, windows ou Web.

Existem dois tipos de validações que podem ser no Front-end e no Back-end. Se estivermos construindo uma aplicação web devemos fazer validações tanto em front-end quanto em Back-end, pois, existem pessoas que podem desabilitar o JavaScript dos browsers, ou podem existir sistemas que utilizam browser que o javascript não funciona.

No ORM Entity Framework iremos utilizar validações diretamente no código. Caso as validações não sejam respeitadas o sistema emitirá mensagens de erro. Abaixo seguem algumas validações:

  • REQUIRED;
  • MAXLENGTH;
  • REGULAR EXPRESSION;
  • RANGE.

REQUIRED

A validação / assinatura REQUIRED necessita que a propriedade seja preenchida, validando somente a presença.

MAXLENGTH

A validação / assinatura MAXLENGTH limita a quantidade de caracteres na propriedade. Exemplo: a propriedade permitirá que até 100 caracteres sejam digitados.

RANGE

A validação / assinatura RANGE restringe a propriedade limitando com um valor inicial e um valor final. Exemplo: a propriedade ano aceita valores de 1983 até 2045

REGULAR EXPRESSION;

É uma linguagem para tratar validações referente a textos. Exemplo, podemos validar se a propriedade é um email, site, CEP, se foi digitada a formatação de CPF, etc. Regular Expression faz um formato de validação.

Vamos continuar utilizando modelo que criamos na aula 72 e iremos adicionar no DbContext mais um model, que é o de Cliente:

      
        namespace Relacionamento
        {
          class BaseContext: DBContext
          {
            public BaseContext(): base("Relacionamento") { }
            public DbSet< Modelo> Modelos {get;set;}
            public DbSet< Cliente> Clientes {get;set;}
          }          
        }
       
    

Vamos utilizar as validações Required, MaxLength, Regular Expression e Range.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            [Key()]
            public int Id { get;set; }
            
            [Required]
            [MaxLength(50, ErrorMessage = "Nome muito grande")]
            [RegularExpression(@"santos", ErrorMessage = "Nome precisa ter santos")]
            public string Nome { get;set; }


            [Required]
            [RegularExpression(@"([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})", ErrorMessage = "CPF precisa estar no formato correto.")]
            public string CPF { get;set; }

            
            [Range(2000,2025), ErrorMessage = "Não aceito pessoas que nasceram antes dos anos 2000")]
            public int AnoNascimento { get;set; }

          }

          }
        }
       
    

Iremos adicionar o método que lista Clientes.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public List< Cliente> Todos() 
            {
              var db = new BaseContext();
              return db.Clientes.ToList();
            }
  
          }
        }
       
    

Vamos adicionar o método Salvar na classe Cliente.

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public void Salvar() 
            {
              var db = new BaseContext();
              db.Clientes.Add(this);
              db.SaveChanges();
            }
          }
        }
       
    

Para tratar mensagens de erro, dentro do método Salvar, incluiremos o try catch no método Salvar().

      
        namespace Relacionamento
        {
          public class Cliente 
          {
            public void Salvar() 
            {
              try 
              {
                var db = new BaseContext();
                db.Clientes.Add(this);
                db.SaveChanges();
              }
              catch(DbEntityValidationException erro)
              {
                var mensagens = string.Empty; 
                foreach(var verr in erro.EntityValidationErrors)
                {
                  foreach(var ve in verr.ValidationErrors)
                  {
                      mensagens += "Campo:" + ve.PropertyName + " -Erro: " + ve.ErrorMessage + ", ";
                  }
                }
                throw new Exception(mensagens);
              }
            }
          }
        }
       
    

Vamos criar um objeto cliente através do programa principal e verificar que o sistema vai emitir uma mensagem de erro, pois o CPF e o ano foram digitados incorretamente:

      
        namespace Relacionamento  
          class Program 
          {
            static void Main(string[] args)
            {
              
              new Cliente() { Nome="Danilo", AnoNascimento = 1983, CPF = "333.555.66-77"}.Salvar();
  
            }
          }