Gracias nuevamente a todos Puse en practica algo similar a lo que me comentas José, y efectivamente como resultado final, en el orden siguiente 1.- retorno a la vista el objeto con los mensajes de error 2.- se ejecuta Application_EndRequest, y con ello se ejecuta la linea del Commit(); 3.- Mi objeto que en primera instancia no paso la validacion, tampoco fue cambiado en la base de datos, con datos no validos
Pregunta: que hizo el Commit() ?, volvio a persistir mi objeto valido ?, aparentemente hizo commint, pero como no habia nada que permanezca en save de la session, pues finalmente no hizo nada ?, o difinitivamente no tengo que preocuparme porque este es el proceso normal ? Edgar El día 19 de julio de 2010 13:24, José F. Romaniello <[email protected]> escribió: > Ahora estamos hablando de otra cosa: > suponiendo que vos tenes un action como Save > public void Save(ViewModel viewModel) > { > if(ModelState.IsValid) > { > hacer algo para continuar guardando. viewModel > return View....Siguient. > } > return View(viewModel); > } > Lo único que tienes que hacer es implementar IDataErrorInfo en el viewmodel, > y creo que en la versión 2.0 si usas DataAnnotations no hace falta nada más. > Conclusión final, controller, Asp.Net MVC, ViewModel, etc.... control de > excepciones... donde juega NHibernate en la pregunta? > > > > El 19 de julio de 2010 15:16, Edgar Ramos <[email protected]> escribió: >> >> Gracias Gustavo >> >> Pecando nuevamente de novato, como logro por un lado regresar a la >> vista mi objeto invalido (para que pueda ser visualizado con sus >> errores) >> y como logro que este objeto ivalido no sea persistido. >> >> A lo mejor estan sencillo y yo lo complico demasiado >> >> Saludos >> >> Edgar >> >> El día 19 de julio de 2010 12:58, Gustavo Ringel >> <[email protected]> escribió: >> > Edgar, si haces return adentro del catch, absorbiste el throw o sea que >> > en >> > tu vida vas a llegar a la excepcion de tu session manager, a menos que >> > "tengas suerte" y return View(objeto) de una excepcion :). >> > Gustavo. >> > >> > 2010/7/19 Edgar Ramos <[email protected]> >> >> >> >> En mi pequeño ejemplo de una aplicacion asp net mvc + nh 2.1, he >> >> implementado IHttpModule, pero tengo una duda, >> >> en mi controller tengo lo siguiente >> >> >> >> try { >> >> //codigo que puede lanzar una exception >> >> } >> >> catch (Exception) { >> >> return View(objeto); >> >> } >> >> >> >> si por cualquier motivo entra al catch , el codigo abajo descrito >> >> Application_EndRequest(), es suficiente para que haga un Rollback() ?, >> >> este >> >> sería automatico ?, o tengo que implementar algo adicional ? >> >> >> >> Por un lado el patron me dice por cada request una session, noto que >> >> en mi ejemplo eso lo esta haciendo, pero por otro lado la parte ACID, >> >> con el unit of work , no me esta funcionando, o la verdad ya estoy >> >> confundido, si tengo que leer en español o en ingles, cualquier link, >> >> pdf, lo que sea me es bienvenido >> >> >> >> private void Application_EndRequest(object sender, EventArgs e) { >> >> >> >> ISession session = CurrentSessionContext.Unbind( >> >> ServiceLocator.Current.GetInstance<ISessionFactory>()); >> >> >> >> try { >> >> >> >> if (session.Transaction.IsActive) { >> >> session.Transaction.Commit(); >> >> } >> >> >> >> } >> >> catch (Exception) { >> >> if (session.Transaction.IsActive) { >> >> session.Transaction.Rollback(); >> >> } >> >> >> >> throw; >> >> >> >> } >> >> finally { >> >> session.Close(); >> >> } >> >> } >> >> >> >> >> >> >> >> Saludos >> >> >> >> Edgar >> >> >> >> PD: Me sugirieron hacer unos test, pero recien estoy entrando a ese >> >> mundo, >> >> >> >> -- >> >> 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
