Nesta aula iremos aprender como fazer validações de modelos no Entity Framework (Required, Range, RegularExpression, MaxLength)
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:
A validação / assinatura REQUIRED necessita que a propriedade seja preenchida, validando somente a presença.
A validação / assinatura MAXLENGTH limita a quantidade de caracteres na propriedade. Exemplo: a propriedade permitirá que até 100 caracteres sejam digitados.
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
É 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();
}
}
Nesta aula iremos aprender como fazer validações de modelos no Entity Framework (Required, Range, RegularExpression, MaxLength)
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:
A validação / assinatura REQUIRED necessita que a propriedade seja preenchida, validando somente a presença.
A validação / assinatura MAXLENGTH limita a quantidade de caracteres na propriedade. Exemplo: a propriedade permitirá que até 100 caracteres sejam digitados.
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
É 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();
}
}