Gracias Nelo, algo así es lo que terminé haciendo.
Entiendo lo que decís sobre las excepciones de la DB, pero en este caso no
me parece que se justifique modelar dichas reglas en el dominio.

2011/9/25 [email protected] <[email protected]>

> Germán, esperar a las excepciones de la db para detectar validaciones
> no es de las mejores prácticas. Es decir, si son situaciones que tu
> negocio debería manejar no deberían estar en la db (posiblemente
> deberían ser desarrolladas antes de que exista la db). Quizás este
> enfoque te ayude.
>
> De todas formas, si querés que seguir con esta metodología (yo varias
> veces la utilizo), te sugiero que hagas un manejo de transacciones en
> forma explícita, es decir, que tengas algo como:
>
> try
> {
>   using (var tx = transactionManager.GetTransaction()) {
>     dao.Delete(id);
>
>     tx.Complete();
>      return Json(null);
>   }
> }
> catch (Exception ex)
> {
>  return Json(ex.Message);
> }
>
> saludos.
> nelo
>
>
> 2011/9/25 Germán Schuager <[email protected]>:
> > Mariano, gracias por la sugerencia.
> > Usando session-per-action y un ActionFilter parece que se podría manejar
> la
> > situación, aunque no se si no se termina complicando más de lo
> necesario....
> > por eso estaba interesado en escuchar la experiencia de alguien que haya
> ido
> > por ese lado.
> >
> > 2011/9/25 Mariano Ravinale <[email protected]>
> >>
> >> Hola:
> >>
> >> Quizas se podria probar de utilizar "Session-Per-Action":
> >>
> >>
> >>
> http://ayende.com/blog/4809/refactoring-toward-frictionless-odorless-code-what-about-transactions
> >>
> >>
> >>
> http://geeks.ms/blogs/gtorres/archive/2009/11/04/aspnet-mvc-nhibernate-session-per-request-y-action-filters.aspx
> >> (Ver tambien los comentarios de Fabio y Carlos)
> >>
> >> o creando algun Acton Filter para forzar el Flush y customizar el manejo
> >> de errores.
> >> Saludos,
> >> Mariano
> >>
> >> El día 25 de septiembre de 2011 12:06, Germán Schuager
> >> <[email protected]> escribió:
> >> > 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
> >
> > --
> > 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
>

-- 
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