miércoles, 24 de julio de 2013

NHibernate Atributo Cascada (cascade):

Las Entidades poseen asociaciones con otros objetos, esto puede ser una asociación a un solo elemento (many-to-one) o una asociación a una colección (one-to-many, many-to-any).

Sin embargo cualquiera que sea el caso nosotros somos capaces de indicarle a NHibernate como debe recorrer automáticamente las asociaciones de la entidad y actuar de acuerdo a como se le ha indicado a través del atributo cascada. Por ejemplo si tenemos un objeto padre y este objeto a su vez contiene una colección de objetos hijos asociados a él, cada vez que creamos cada objeto hijo con el atributo de "cascade = save/update" le estamos dando instrucciones a NHibernate de añadir el objeto hijo a dicha colección asociándolo con el padre a través de la llave foránea sin necesidad de instrucciones explicitas de nuestra parte.
 
A continuación se explican los valores que puede tomar este atributo y su funcionalidad.
  • none  =  no realizar ninguna acción en cascada, dejar que el usuario lo maneje por si solo.
  • save-update = cuando un objeto se guarda/actualiza, revisa las asociaciones de ese objeto con otros y guarda/actualiza cualquier objeto que lo requiera.
  • delete = cuando el objeto es eliminado se eliminan todos los objetos que están asociados a el.
  • all = aplica para todos es decir save-update-delete (revisa las asociaciones que posee el objeto y guarda-actualiza-elimina todos los objetos que encuentre).