Hoje comecei a utilizar novamente o LINQ To SQL em um projeto, sim o LINQ To SQL ainda existe, e eu gosto muito, mas por que não estou utilizando o EF4? Bom não preciso de tudo que tem no EF4 para esse projeto, o LINQ To SQL da conta do recado de sobra :).
Utilizo muito DataAnnotations com POCO no EF4, é extremamente útil para validação das propriedades das Entidades, faço toda a regra de validação diretamente na classe e só mostro as mensagens na tela para o usuário.
Não vou usar POCO no LINQ To SQL, li em algum lugar que tem como, mas não me aprofundei muito no assunto, caso alguém tenha experiência com POCO no LINQ To SQL comente por favor! :)
No exemplo eu possuo uma tabela Usuario mapeada com o LINQ To SQL.
Analisando o código gerado automaticamente, vemos que a classe Usuario é partial ou seja, eu posso ter outra classe Usuario no meu projeto, também partial que na compilação essas duas classes serão agrupadas.
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Usuario")] public partial class Usuario : INotifyPropertyChanging, INotifyPropertyChanged
Então o primeiro passo é criar uma nova classe Usuario também partial.
public partial class Usuario
{
}
Agora só o que precisamos fazer é criar uma classe de Metadata com as mesmas propriedades da classe Usuario gerada pelo LINQ To SQL e com as validações desejadas. Para manter um padrão costumo chamar as classes de Metadata como {NomeClasse}Metadata então agora criamos a classe UsuarioMetadata.
public class UsuarioMetadata
{
[Required(ErrorMessage="O Nome é de preenchimento obrigatório")]
public string Nome { get; set; }
[Required(ErrorMessage = "O Login é de preenchimento obrigatório")]
public string Login { get; set; }
[Required(ErrorMessage = "A Senha é de preenchimento obrigatório")]
[StringLength(10, ErrorMessage = "O número máximo de caracteres para a senha é 10")]
public string Senha { get; set; }
}
Lembrando que para utilizar os DataAnnotations precisamos adicionar o namespace System.ComponentModel.DataAnnotations. Analisando o código acima temos as validações necessárias para o Usuário, todas as propriedades são obrigatórias e a senha pode ter no máximo 10 caracteres.
O último passo é informar para a classe parcial que criamos, qual classe de Metadata ela vai utilizar, para isso utilizamos o atributo MetadataType.
[MetadataType(typeof(UsuarioMetadata))]
public partial class Usuario
{
}
Feito isso, já possuo a validação funcionando no MVC, veja abaixo.
Só eu acho que utilizar DataAnnotations é melhor que escrever valiações na tela? :)
Abraços e até o próximo artigo.






