POCOS e validação.

65 views
Skip to first unread message

Rafael Delanhese

unread,
May 6, 2012, 1:40:15 PM5/6/12
to dotnetar...@googlegroups.com
Boa tarde, 

Eu tenho a seguinte situação em dos projetos que estou envolvido e gostaria da opinião de meus colegas  sobre qual abordagem adotar...

Algumas classes do meu modelo possuem algumas regras de negócio complexas, como por exemplo, existe uma classe Movimento e após um objeto desta classe ter seu status alterado para fechado, nenhum de seus valores pode ser alterado.

Eu não acho que simplesmente inibir a alteração dos campos via a interface do usuário seja uma boa alternativa, tendo em vista que esta é uma regra de negócio.... Num primeiro momento eu pensei em colocar tal validação nos setters das minhas propriedades, mas acabei com um punhado de código repetido...

Tentei também usar um proxy do Castle Project para interceptar todos os setters das minhas classes e manter uma lista de propriedades alteradas, só que acabei tendo problemas com o NHibernate que não reconhecia
o proxy como um tipo mapeado...

Pela necessidade de entregar logo eu acabei optando pelos setters, mas não me sinto a vontade com esta solução.

Alguem de vocês já passou por algo parecido ou tem em mente alguma solução que soe menos estranha?

Obrigado,

Rafael.

Fernando Mondo

unread,
May 7, 2012, 8:26:11 AM5/7/12
to dotnetar...@googlegroups.com
isto é "facilmente" solucionado com o Padrão de Projeto State.

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br

Bruno Gallego

unread,
May 17, 2012, 9:55:41 AM5/17/12
to dotnetar...@googlegroups.com
No NH nao tem como dizer qual é o proxy ou a proxy factory ??? algo assim
acho tem hein ...


Rafael Delanhese

unread,
May 17, 2012, 12:44:43 PM5/17/12
to dotnetar...@googlegroups.com
Então ele tem , o problema que eu tive com isso foi que por exemplo quando eu precisava fazer um Criteria passando um desses proxys como parametro ele não reconhecia como sendo uma subclasse do meu poco.

Quanto ao padrão State no caso eu teria que implementar uma restrição em todas as propriedades da classe?



Em quinta-feira, 17 de maio de 2012 10h55min41s UTC-3, Bruno Gallego escreveu:
No NH nao tem como dizer qual é o proxy ou a proxy factory ??? algo assim
acho tem hein ...



Em 7 de maio de 2012 09:26, Fernando Mondo <fernand...@gmail.com> escreveu:
isto é "facilmente" solucionado com o Padrão de Projeto State.

Em 6 de maio de 2012 14:40, Rafael Delanhese <rafade...@gmail.com> escreveu:
Boa tarde, 

Eu tenho a seguinte situação em dos projetos que estou envolvido e gostaria da opinião de meus colegas  sobre qual abordagem adotar...

Algumas classes do meu modelo possuem algumas regras de negócio complexas, como por exemplo, existe uma classe Movimento e após um objeto desta classe ter seu status alterado para fechado, nenhum de seus valores pode ser alterado.

Eu não acho que simplesmente inibir a alteração dos campos via a interface do usuário seja uma boa alternativa, tendo em vista que esta é uma regra de negócio.... Num primeiro momento eu pensei em colocar tal validação nos setters das minhas propriedades, mas acabei com um punhado de código repetido...

Tentei também usar um proxy do Castle Project para interceptar todos os setters das minhas classes e manter uma lista de propriedades alteradas, só que acabei tendo problemas com o NHibernate que não reconhecia
o proxy como um tipo mapeado...

Pela necessidade de entregar logo eu acabei optando pelos setters, mas não me sinto a vontade com esta solução.

Alguem de vocês já passou por algo parecido ou tem em mente alguma solução que soe menos estranha?

Obrigado,

Rafael.

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com
Reply all
Reply to author
Forward
0 new messages