Ok, tenes razon que eso podria llevar a que para cada accion alguien piense que es bueno hacer apertura y cerrado de la session.
El tema es usar la session por el periodo que dura el caso de uso / business transaccion y no mas que eso. En este caso habla de MVC y por tanto en general es por todo el request. No usar la session como un singleton, ni abrirla y cerrarla por cada accion con la base... Gustavo. 2010/8/10 Fabio Maulo <[email protected]> > la session "lo mas corto" ? > seguro no hay que tener una sola session para toda la app, pero "corto" ? > > 2010/8/9 Gustavo Ringel <[email protected]> > >> ISessionStorage, me suena a dinamita... >> En la documentacion de NH dice que session tiene que ser lo mas corto >> posible y apenas da una excepcion hay que tirarla >> Ahi lo que parece es que crean una session al principio y van devolviendo >> la misma session, no se cual es el life cycle, pero bueno...fijense bien si >> estan siguiendo los principios de manejo de session. >> >> Gustavo. >> >> 2010/8/9 NM <[email protected]> >> >>> Este es nuestro método mediante el cual obtenemos session >>> >>> >>> public static ISession Session(string database) >>> { >>> if (SessionStorage == null) >>> { >>> throw new Exception("NHibernateSession no está >>> inicializado. Llama a Init antes de operar con él. Comprueba también >>> que haya un ISessionStorage asociado a NHibernate."); >>> } >>> >>> ISession session = SessionStorage.Session(database); >>> if (session == null) >>> { >>> session = _sessionFactory[database].OpenSession(); >>> SessionStorage.SetSession(database, session); >>> } >>> >>> return session; >>> } >>> >>> Esta es la forma en que lo empleamos >>> >>> var session = >>> NHibernateSession.Session(NHibernateSession.BBDD); >>> using (var transaction = session.BeginTransaction()) >>> { >>> var listaMensaje = session >>> .CreateQuery(@" >>> from >>> NhOfiMensajeria M >>> where >>> M.Referencia like 'FD:%' >>> And M.AUsuario=:valorUsuarioMensajeria >>> ") >>> .SetParameter("valorUsuarioMensajeria", >>> valorUsuarioMensajeria) >>> .List<NhOfiMensajeria>(); >>> >>> transaction.Commit(); >>> } >>> >>> On 9 ago, 16:40, Gustavo Ringel <[email protected]> wrote: >>> > Si tu flush mode no es en commit el commit no hace flush de todo lo que >>> > escribiste. >>> > Adicionalmente suena a que tenes lo que llama un Time Bomb session >>> > management, o sea suena a que abris una sola session. >>> > Si abris sessions de NHibernate en cada request no tendrias que tener >>> ningun >>> > problema de leer los datos que se escriben en la otra base. >>> > Claro que si por ejemplo cacheas, o le decis a NH que los datos no son >>> > mutables, podes tener distintos tipos de desincronizacion. >>> > >>> > Gustavo. >>> > >>> > 2010/8/9 Maria Teresa Ruiz Espinosa <[email protected]> >>> > >>> > >>> > >>> > > Nuestro funcionamiento normal es hacer un beginTransaction y al >>> finalizar >>> > > la consulta un commit de la transacción. >>> > >>> > > No tenemos definido ningún FlushMode en especifico. >>> > >>> > > -- >>> > > 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 >> > > > > -- > Fabio Maulo > > -- > 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
