Integrando NHibernate.Validator con Db4o
Para quien no están familiarizado con NHibernate Validator: es un buen framework para validar objetos en cualquier parte de nuestra aplicación.
Ahora, como podemos integrar esta herramienta para poder validar nuestros objetos antes de almacenar un objeto en Db4o? La respuesta es fácil.
Recordemos que NHibernate Validator puede configurarse para validar usando .Net Attributes o archivos Xml. En este caso veremos como hacerlo usando la primer aproximación. La clase Customer debería lucir así:

Ahora para hacer la integración, llamaremos a un helper que haga el trabajo por nosotros. Nuestro código luciría así:

Como puedes ver, con una simple clase ayudante podemos configurar la integración con una línea de código, algo muy fácil. En esta línea el método Initialize registra los eventos en Db4o.
Ahora, vayamos a ver la Validación en Acción. El código de abajo muestra a la aplicación intentando guardar una instancia inválida de un objeto:

Entonces cuando un Save/Update está a punto de ocurrir, primero que nada, NHibernate Validator chequeará si la entidad se encuentra dentro un estado válido, sino lo está, una InvalidStateException será lanzada, entonces Db4o encapsula esta excepción con una excepción EventException, que luego deberemos atrapar y desencapsular para recuperar la primera excepción, y de esta manera obtenemos los valores inválidos que de la entidad. Sería bueno que Db4o no encapsule la excepción pero por varios motivos esto no puede ser así, esto fue discutido en el foro de Desarrollo de Db4o aquí.
Entonces, fue fácil integrar NHV con Db4o. No ?
Descargar el ejemplo
-
Categories
- .NET
- ActiveRecord
- agil
- Alt.Net
- AOP
- Asp.net MVC
- blog
- C#
- codegeneration
- cosas interesantes
- db4o
- db4o-analyzer
- DLR
- enterprise-library
- expresiones regulares
- General
- Hibernate
- IoC
- it
- Java
- LINQ
- Linux
- Lucene
- Mocking
- Mono
- monosms
- MVC
- NAnt
- NHibernate
- NHibernate.Burrow
- NHibernate.Contrib
- NHibernate.Validator
- noticias
- O/R Mapping
- Open Source
- patrones
- personal
- podcast
- programación
- Redes Neuronales
- Refactoring
- regex
- Scrum
- Security
- Shards
- Sin Categoría
- Spring
- SqlServer
- Testing
- tips
- Tool
- tutorial
- Ubuntu
- uNHAddIns
- video
- Virtualización
- Visual Basic.Net
- Visual Studio
- VMWare
- Web
-
Articles
- June 2011
- May 2011
- November 2009
- October 2009
- April 2009
- March 2009
- February 2009
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
-
Meta




