Validação é algo de suma importância, e que muitas vezes é colocada em segundo ou até terceito plano no desenvolvimento de aplicações. O NHibernate Validator é um poderoso framework de validação, que torna simples e objetiva a tarefa de validar os dados fornecidos pelos usuários para a sua aplicação. Ele possui vários recursos, como configuração dos validadores através de XML e de atributos, integração com NHibernate, entre outros. Vamos mostrar um exemplo simples, onde a configuração dos validadores será feita através de atributos decorando as propriedades da classe Usuario abaixo:

   1:  using NHibernate.Validator;
   2:   
   3:  public class Usuario
   4:  {
   5:      private int id;
   6:      private string nome;
   7:      private string email;
   8:      private DateTime dataNascimento;
   9:   
  10:      [Min(1, Message = "Id deve ser positivo")]
  11:      public int Id
  12:      {
  13:          get { return id; }
  14:          set { id = value; }
  15:      }
  16:   
  17:      [NotNullNotEmpty(Message = "Nome é obrigatório."),
  18:       Length(Max= 80, Message = "Nome deve ter no máximo 80 caracteres.")]
  19:      public string Nome
  20:      {
  21:          get { return nome; }
  22:          set { nome = value; }
  23:      }
  24:   
  25:      [Email(Message = "E-mail inválido."),
  26:       NotNullNotEmpty(Message = "E-mail é obrigatório.")]
  27:      public string Email
  28:      {
  29:          get { return email; }
  30:          set { email = value; }
  31:      }
  32:   
  33:      [Past(Message = "Data de nascimento deve estar no passado."),
  34:       NotNull(Message = "Data de nascimento é obrigatório.")]
  35:      public DateTime DataNascimento
  36:      {
  37:          get { return dataNascimento; }
  38:          set { dataNascimento = value; }
  39:      }
  40:  }

 

  Lembrando que é necessário referenciar a dll NHibernate.Validator.dll no projeto. Existem muitos outros atributos, como Digits (para valores numéricos), CreditCardNumber (número de cartões de crédito), IPAddress (endereços IP), além da possibilidade de criar atributos de validação customizados. Com a configuração dos validadores feita, é hora de testar se os dados recebidos pelo objeto serão válidos:

   1:  using NHibernate.Validator.Engine;
   2:   
   3:  static void Main(string[] args)
   4:  {
   5:       Usuario user = new Usuario();
   6:       user.Id = 10;
   7:       user.Nome = "Rogério Bragil";
   8:       user.Email = "rogerio";
   9:       user.DataNascimento = new DateTime(1978, 1, 27);
  10:       ValidatorEngine validator = new ValidatorEngine();
  11:       InvalidValue[] erros = validator.Validate(user);
  12:       foreach (InvalidValue erro in erros)
  13:       {
  14:           Console.WriteLine(erro.Message);
  15:       }
  16:       Console.ReadKey();
  17:  }

 

A execução deste exemplo exibe a seguinte mensagem:

E-mail inválido

devido ao fato da propriedade Email ter recebido a string "rogerio" (que não é um e-mail válido).

Esse exemplo foi uma pequena amostra dos recursos do NHibernate Validator. Há muito mais o que ser explorado, vale muito a pena dar uma lida na documentação e explorar mais recursos dessa poderosa ferramenta de validação.


Comments


December 5. 2009 04:06
free escape games
Amazing post. Bookmarked it already. sincerely, John.

http://www.onlineflashgames.org/games/escape.htmhttp://www.onlineflashgames.org/games/escape.htm


December 28. 2009 02:08
easy loans
I love what you guys are always up too. Such clever work and reporting! Keep up the great works guys I've added you guys to my blogroll.

http://www.globalpaydayloans.com/http://www.globalpaydayloans.com/


February 9. 2010 12:16
cash loans
Hey I love your style I will subscribe for your feed please keep posting!

http://www.globalpaydayloans.com/http://www.globalpaydayloans.com/


February 14. 2010 00:59
Colon cleansing
Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!

http://www.super-colon-cleanses.com/http://www.super-colon-cleanses.com/


February 25. 2010 10:01
pay day loans
I completely agree with the above comment, the internet is with a doubt growing into the most important medium of communication across the globe and its due to sites like this that ideas are spreading so quickly.

http://www.sonicloans.net/http://www.sonicloans.net/


February 25. 2010 15:25
paydayloans
This is a great article thanks for sharing this informative information.. I will visit your blog regularly for some latest post.

http://www.sonicloans.net/http://www.sonicloans.net/


February 27. 2010 06:38
cash advance
You made some good points there. I did a search on the topic and found most people will agree with your blog.

http://www.flyingloans.com/http://www.flyingloans.com/


February 27. 2010 09:49
cash advance
As a Noob, I am always seeking online for articles that can help me. Thank you

http://www.flyingloans.com/http://www.flyingloans.com/

Páginas

Calendário

«  September 2010  »
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
View posts in large calendar