Gracias Nuevamente

Con respecto al codigo enviado (NHSessionWebModule), las
modificaciones respectivas son las comentadas en este thread verdad

http://www.mail-archive.com/[email protected]/msg08892.html

Justo aqui Fabio, tu sugieres que para asp net mvc, mejor hacerlo
utilizando ActionFilterAttribute, y aqui viene un poco mi confusion
cualquiera de las dos formas a)implementando IHttpModule o
b)ActionFilterAttribute me lleva al mismo objetivo, implementar
session per request.

Entonces cual elegir ?, que gano o pierdo con cualquier opcion

Saludos


Edgar




El día 31 de mayo de 2010 18:03, Fabio Maulo <[email protected]> escribió:
> Les mando unos links para que vean donde podría estar el
> SessionFactoryProvaider y como "podría" ser implementado de una forma que
> permita ser configurado de otra manera (FNH, ConfORM, por codigo, por
> Configuracion serializada etc.)
> http://code.google.com/p/unhaddins/source/browse/trunk/uNhAddIns/uNhAddIns/SessionEasier/SessionFactoryProvider.cs
> Una explicación de las posibilidades de esas interfaces/clases y de como
> usarlas la encuentran acá
> http://fabiomaulo.blogspot.com/2009/09/configure-sessionfactory-providers.html
> Google-code NO muestra, lamentablemente, uNhAddIns.Web donde se encuentra la
> implementación del WebSessionContext y del NHSessionWebModule (lo pongo en
> attach para que pueda modificarlo).
>
> Para el uso del GuyWire
> http://fabiomaulo.blogspot.com/2009/11/guywire.html
> cuya implementaciones está acá
> http://code.google.com/p/unhaddins/source/browse/trunk/uNhAddIns/uNhAddIns.Adapters/IGuyWire.cs
> http://code.google.com/p/unhaddins/source/browse/trunk/uNhAddIns/uNhAddIns.Adapters/ApplicationConfiguration.cs
> Obviamente se puede estar allí mirando ejemplos y re-escribiendo clases
> pero, cuando se empieza con NH, y se necesita algo para la configuración y
> manejo de sessiones es suficiente con compilar uNhAddIns y usarlo.
>
>
> 2010/5/31 José F. Romaniello <[email protected]>
>>
>>
>> El 31 de mayo de 2010 16:17, Edgar Ramos <[email protected]> escribió:
>>>
>>> Gente he revizado todo y ahora si me despliega la informacion que
>>> requeria, pero vamos por pasos, la alegria se complementa con sus
>>> opiniones respecto a lo siguiente
>>>
>>> 1.- ISessionFactory es inyectada a mis dao/repository via el
>>> constructor via el fw IoC como lo comentaba en el primer post, esta es
>>> la clase que utilizo para tal efecto, algo asi de sencillo, por favor
>>> sus comentarios
>>>
>>> public class SessionFactoryProvider
>>>    {
>>>        private readonly Configuration configuration;
>>>
>>>        public SessionFactoryProvider() {
>>>
>>>            configuration = new Configuration();
>>>
>>>            configuration.Configure();
>>>
>>>        }
>>>
>>>        public ISessionFactory BuildSessionFactory() {
>>>
>>>            return configuration.BuildSessionFactory();
>>>        }
>>>    }
>>
>> Si, si haces algo así, registra ISessionFactory de esta forma:
>>
>> container.Register(Component.For<ISessionFactory>().Instance(new SessionFactoryProvider().BuildSessionFactory());
>> recorda que el build session factory es muy costoso, y solo debería
>> ocurrir 1 sola vez en el ciclo de vida de tu aplicación.
>>
>>>
>>> 2.- Con Session per Request, al no hacer un bind de la session en el
>>> context, recibi un mensaje como el siguiente no hay ninguna sesión
>>> conectada al contexto actual, asi que la clase que hace esto posible
>>> es la siguiente
>>>
>>> public class NHibernateCurrentSessionWebModule : IHttpModule
>>>    {
>>>        #region Miembros de IHttpModule
>>>
>>>        public void Dispose() {
>>>        }
>>>
>>>        public void Init(HttpApplication context) {
>>>            context.BeginRequest += new
>>> EventHandler(Application_BeginRequest);
>>>            context.EndRequest += new
>>> EventHandler(Application_EndRequest);
>>>        }
>>>
>>>        #endregion
>>>
>>>        private void Application_BeginRequest(object sender, EventArgs e)
>>> {
>>>            ISession session =
>>> ServiceLocator.Current.GetInstance<ISessionFactory>().OpenSession();
>>>            session.BeginTransaction();
>>>            CurrentSessionContext.Bind(session);
>>>        }
>>>
>>>        private void Application_EndRequest(object sender, EventArgs e) {
>>>
>>>            ISession session = CurrentSessionContext.Unbind(
>>>            ServiceLocator.Current.GetInstance<ISessionFactory>());
>>>
>>>            if (session != null)
>>>                try {
>>>                    session.Transaction.Commit();
>>>                }
>>>                catch (Exception) {
>>>                    session.Transaction.Rollback();
>>>                    throw;
>>>                }
>>>                finally {
>>>                    session.Close();
>>>                }
>>>        }
>>>    }
>>>
>>> Esto tiene su respectiva configuracion en el Web.Config en la seccion
>>> <httpModules>
>>>
>>
>> Hay algo ahi que no me gusta, me parece que tendrías que
>> 1- usar  WebSessionContext.Bind( ) y WebSessionContext.UnBind(),
>> 2- Acordate de poner en tu hibernate.cfg.xml esta propiedad:
>>
>> <property name="current_session_context_class">web</property>
>>
>> 3-podes evitar abrir session en algunos, request.. por ejemplo cuando el
>> request es solamente por una imagen.
>>
>>>
>>> 3.- Verifique que en el archivo hibernate.cfg.xml, me faltaba lo
>>> siguiente <mapping assembly="MM.Persistence.NH"/>
>>
>> ok
>>
>>>
>>> 4.- Las clases expuestas aqui han sido creadas y configuradas en un
>>> assembly especifico, (Infraestructure) MM.MM.Bootstrapper (sigue el
>>> ejemplo de ChinookWP y GuyWire ), la pregunta que se me plantea es, al
>>> ser este el lugar que cablea toda mi aplicacion, deben estar aqui
>>> estas clases ?, o deben estar en otro assembly no se, por ejemplo que
>>> la clase SessionFactoryProvider deba estar en el assembly donde estan
>>> mis mappings, aqui tambien se encuentran las implementaciones de mis
>>> dao/repository
>>
>> Con respecto a SessionFactoryProvider, me suena mas a algo de
>> infrastructura, pero no soy contundente con eso. Tampoco le veo mucho
>> sentido a eso, podría ser parte del mismo "configurador" o installer de
>> nhibernate.
>>
>>>
>>> Hay muchas mas preguntas, pero lo dejare para mas tarde
>>>
>>>
>>> Muchas Gracias y Saludos
>>>
>>>
>>> Edgar
>>>
>>>
>>>
>>>
>>> El día 31 de mayo de 2010 10:31, José F. Romaniello
>>> <[email protected]> escribió:
>>> > Que disculpa ni disculpa!
>>> > Todos los que participan en este foro quieren ayudar, y están para
>>> > resolver
>>> > justamente este tipo de inconvenientes que tiene la gente. Así que
>>> > cualquier
>>> > cosa que necesites mantenemos al tanto
>>> > BTW; felicitaciones por la iniciativa de empezar un blog!
>>> > El 31 de mayo de 2010 11:59, Edgar Ramos <[email protected]>
>>> > escribió:
>>> >>
>>> >> Gracias a todos por la ayuda
>>> >>
>>> >> Estoy reaciendo el codigo nuevamente, José ya lo termino y vuelvo a
>>> >> postear, estaba disgustado conmigo mismo frente a la frustración, esto
>>> >> debe ser tan sencillo para muchos pero complicado para mi, mas cuando
>>> >> le he tomado cariño a nh y a todo lo que se le relaciona.
>>> >>
>>> >> Quiero ser bueno en desarrollo y quiero aprender a utilizar bien nh
>>> >> para poder ayudar a gente que debe estar en mi mismo nivel, hasta ya
>>> >> me estoy animando abrirme un blog e ir comentando mis alegrias y
>>> >> penurias
>>> >>
>>> >> saludos y disculpad mis comentarios
>>> >>
>>> >> Edgar
>>> >>
>>> >>
>>> >> El día 31 de mayo de 2010 09:49, José F. Romaniello
>>> >> <[email protected]> escribió:
>>> >> > Bueno hay algo que me parece raro desde el vamos, y es que si
>>> >> > realmente
>>> >> > tuvieras un problema con el patrón session per request... no
>>> >> > devolvería
>>> >> > "count =0 " si no que te daría un error de que no hay ninguna sesión
>>> >> > conectada al contexto actual.
>>> >> > No obstante;
>>> >> > 1-podrías mostrarnos tu clase "NHibernateCurrentSessionWebModule"
>>> >> > 2-podrías mostrarnos el archivo hibernate.cfg.xml
>>> >> > 3-Si pones un punto de interrupción, en el repositorio, justo cuando
>>> >> > pedis
>>> >> > la current sesión, obtenes algo de ese metodo?, obtenes una
>>> >> > ISession?
>>> >> > saludos
>>> >> >
>>> >> > --
>>> >> > 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
>
>
> --
> 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

Responder a