Q tal, tengo una gran duda acerca del manejo de sesiones, soy nuevo
todavía en el uso de nhibernate, por lo tanto no estoy seguro bien
como realizar un manejo efectivo de las sesiones, la idea es esta:
estoy desarrollando una DAL sobre nhibernate, esta capa está pensada
en utilizarse tanto en proyectos win como web, otra de las
características de los proyectos a desarrollarse es que utilizarán el
patrón MVP, por lo tanto como será reutilizable tengo un manejador de
entidades genérico, de esta forma:

public abstract class BaseNegocio<T>
    {
        #region " Constructor "

        public BaseNegocio()
        { }

        #endregion

        #region " Métodos Publicos "

        public void Insertar(T entidad)
        {
            OperacionBaseDatos(entidad, OperacionesBD.Insertar);
        }

        public void Actualizar(T entidad)
        {
            OperacionBaseDatos(entidad, OperacionesBD.Actualizar);
        }

        public void Eliminar(T entidad)
        {
            OperacionBaseDatos(entidad, OperacionesBD.Eliminar);
        }

        public T Obtener(int id)
        {
            using (ISession session = SessionManager.AbrirSesion())
            {
                return session.Load<T>(id);
            }
        }

        #endregion

        #region " Métodos Privados "

        private void OperacionBaseDatos(object entidad, OperacionesBD
operacionesBD)
        {
            using (ISession session = SessionManager.AbrirSesion())
            {
                using (ITransaction transaccion =
session.BeginTransaction())
                {
                    switch (operacionesBD)
                    {
                        case OperacionesBD.Insertar:
                            session.Save(entidad);
                            break;
                        case OperacionesBD.Actualizar:
                            session.Update(entidad);
                            break;
                        case OperacionesBD.Eliminar:
                            session.Delete(entidad);
                            break;
                    }
                    transaccion.Commit();
                }
            }
        }

        #endregion
    }

En el método OperacionBaseDatos la primera línea lo único q hace es
crear una fábrica de sesiones, si es q no existe una ya creada, y
llama al método OpenSession de la fábrica. Como pueden ver estoy
utilizando microoperaciones lo cual me provocan algunos errores como
cuando trato de utilizar lazy loading.
La pregunta concreta es ¿Cómo puedo hacer para un correcto manejo de
sesiones para trabajar tanto en ambiente web como win?

Muchas gracias de antemano por los consejos y sugerencias.
Saludos.

Ariel Gonzales

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