Bueno si falla el Delete probablemente es por:

1- Mal configurado NHibernate.
2- Problema de conexion
3- Integridad en los datos (i.e. integridad referencial).

En el primer caso al cliente no le va a interesar que quedo mal configurado
NHibernet.  En En el segundo caso no interesa si es en el Delete o en el
final del Request.
Y En el tercer caso si hay un problema de integridad de los datos
(foreignKey violation, etc...) podria ser que:  o tienes mal configurado
NHibernate como en el primer caso, o te esta haciendo falta modelar alguna
regla de negocio la cual informara inmediatamente a tu usuario que no se
puede borrar evitando el error en la BD, o tu BD esta manejando tu logica de
negocio y creo que NHibernate no encajaria tan bien en ese modelo.

Con respecto a forzar el Flush, pues no es recomendable, NHibernate lo hace
muy bien.  Existe la opcion pero se usa para otros
casos<http://nhforge.org/doc/nh/en/index.html#manipulatingdata-flushing>.


Saludos,
Nestor Andres Rodriguez

2011/9/25 Germán Schuager <[email protected]>

> Buenas, me surgió el siguiente problema/duda en una aplicación ASP.NET MVC
> en la cual estoy usando session-per-request y me gustaría saber como lo
> manejan ustedes.
>
> Tengo algo similar a esto:
>
> public ActionResult Delete(int id)
> {
> try
>  {
> dao.Delete(id);
> return Json(null);
>  }
> catch (Exception ex)
> {
>  return Json(ex.Message);
> }
> }
>
> La idea es que si el Delete falla (por ej. por un problema de integridad
> referencial), me llegue al cliente el mensaje de error.
> El problema es que el Delete no va a fallar hasta que se haga el Flush de
> la session actual, lo cual se realiza al final del request... fuera de la
> ejecución del action en cuestión.
>
> La única forma que se me ocurrió de lograr lo que quiero, es hacer el Flush
> (usando alguna abstracción) antes del "return Json(null)".
>
> Se me ocurre que esta misma situación se presenta ante un conflicto de
> concurrencia.
>
> Como resuelven ustedes este tipo de cosas?
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a