A Validação de Dados com Linq é na verdade uma verificação de que os valores inseridos nos objetos de dados estão em conformidade com a estrutura e esquema do objeto, além de prevenir e viabilizar a realização de validações especificas de sua aplicação no objeto.
Além de prevenir erros, a validação de dados reduz requisições no Banco de Dados uma vez que a validação é efetuada na aplicação antes de sua atualização de fato no Banco.
Criando a Validação
Iremos trabalhar com a classe tbClientes, que possui apenas duas propriedades (codCliente e nome).
Vamos criar uma classe parcial da tbClientes para podermos extende-la e em seguida iniciar a criação de um método parcial e sem retorno (void), se observarmos, é apresentado uma sugestão dos métodos de validação que podemos criar:
Escolhendo o método OnnomeChanging podemos validar a alteração da propriedade nome, vamos inserir a seguinte validação:
public partial class tbClientes{ partial void OnnomeChanging(string value) { if (value.Contains("#")) throw new Exception("ERRO DE VALIDAÇÃO"); }}
public
partial
class
tbClientes
{
void
OnnomeChanging(
string
value)
if
(value.Contains(
"#"
))
throw
new
Exception(
"ERRO DE VALIDAÇÃO"
);
}
Ou seja, se o novo valor da propriedade nome possuir o caracter "#" será disparada uma Exceção. Vamos testar:
//Instância do DataContextSerieLinqDB _db = new SerieLinqDB(); //Instância do objeto ClienteCliente cliente = (from c in _db.Clientes where c.codCliente == 1 select c).First(); try{ cliente.nome = "Rafael#Zaccanini"; _db.SubmitChanges();}catch (Exception erro){ Console.WriteLine(erro.Message);}
//Instância do DataContext
SerieLinqDB _db =
SerieLinqDB();
//Instância do objeto Cliente
Cliente cliente = (from c
in
_db.Clientes where c.codCliente == 1 select c).First();
try
cliente.nome =
"Rafael#Zaccanini"
;
_db.SubmitChanges();
catch
(Exception erro)
Console.WriteLine(erro.Message);
Quando executamos o código acima podemos observar que é disparada a exceção e exibido o erro:
Com isso podemos realizar validações em qualquer propridade de nosso objeto, assim como podemos também definir se desejamos validar antes ou depois das alterações serem submetidas ao Banco de Dados. Rafael Zaccanini MTAC – Microsoft Technical Audience Contributor Blog: http://www.rafaelzaccanini.net Twitter: @rafaelzaccanini Facebook: http://www.facebook.com/RafaelZaccaniniNet
Ola Rafael,
Parabéns pelos artigos. Continuem contribuindo.
Por favor, para os novos artigos adicione a tag pt-BR no título.
Obrigado.