Validating(), assim como o Creating(), Editing(), Saving(), Saved(), é um método virtual da BusinessEntity para implementação de regra de negócio.
O Validating() ocorre antes de qualquer validação de dados da entidade. É análogo ao UpdateRequired da macro. É executado pelo Save() da entidade e no momento ideal para preencher valores calculados em campos obrigatórios da entidade.
Já o Validate(), que também é um método virtual, serve para efetuar validações nos dados da entidade de forma padronizada. Não deve ser utilizado para implementar todo o tipo de regra de negócio, apenas validações no dados. É o substituto do atributo HasSelfValidation. Também é executado no Save() da entidade, após o Validating().
Em resumo, ao invocar o Save() de uma entidade, os seguintes métodos virtuais (em negrito) são chamados (nestes métodos você pode implementar suas regras):
- Validating()
- [Validações Builder]
- Validate()
- Saving()
- [Persistência dos dados]
- Saved()
Dúvidas comuns:
- Posso fazer alguma validação no Validating? Não é o local pra isso.
- Posso fazer alguma validação no Validate? Pode sim!
- Posso fazer alguma validação no Saving? Pode sim também!
Mas qual então a diferença do Validate e do Saving? O Validate é um método onde você implementa apenas validação e você pode chamar sem salvar a entidade, por exemplo:
ent.Validate()
Mais informações em:
http://wiki.benner.com.br/wiki/index.php?title=Business_Entity_Framework_-_Valida%C3%A7%C3%A3o_de_Entidades