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

Responder a