Usando o ViewModel no ASP.NET MVC com FluentValidation
-
26-09-2019 - |
Pergunta
Estou usando o ASP.NET MVC com as classes POCO da Entity Framework e a estrutura de validação fluent. Está funcionando bem, e a validação está acontecendo como deveria (como se eu estivesse usando o DataNoTações). Até consegui validação do lado do cliente funcionando. E estou muito satisfeito com isso.
Como este é um aplicativo de teste, estou escrevendo apenas para ver se consigo novas tecnologias trabalhando juntas (e aprendendo -as ao longo do caminho), agora estou pronto para experimentar o uso do ViewModels em vez de apenas passar o modelo real para a exibição. Estou planejando usar algo como o AutomApper no meu serviço para fazer o mapeamento de um modelo para o Model to ViewModel, mas tenho uma pergunta primeiro.
Como isso vai afetar minha validação? Minhas classes de validação (escritas usando FluentValidation) devem ser escritas contra o viewmodel em vez do modelo? Ou isso precisa acontecer nos dois lugares? Um dos grandes negócios sobre o DataNoTations (e a FluentValidation) foi que você poderia ter validação em um local que funcionaria "em todos os lugares". E cumpre essa promessa (principalmente), mas se eu começar a usar o ViewModels, não perco essa habilidade e tenho que voltar a colocar a validação em dois lugares?
Ou estou apenas pensando nisso?
Solução
Ou estou apenas pensando nisso?
Provavelmente ;)
Se você adicionar todo o código de validação aos seus modelos ViewModels, você estaria validando -os em vez de seus modelos reais. Toda a sua mudança realmente é quais objetos podem entrar em um estado inválido.
No momento, estou feliz, pois a torta validando apenas o ViewModels e depois transmitindo essas informações para os modelos reais e as camadas DAO. Se o seu domínio pode ou não entrar em um estado inválido é um tópico controverso, mas até agora essa técnica está funcionando muito bem para mim. Validação em um só lugar e sem objetos inválidos em minha loja de persistência.