Muchas gracias por tus comentarios y apreciaciones José, estoy revisando tus artículos y los ejemplos de uNhAddins para comprender mejor CpBT
On 7 dic, 13:49, José F. Romaniello <[email protected]> wrote: > Lo primero es recordarte que lo que has llamado BaseNegocio<T> parece un > Dao<T>.. Responde a este patrón. > Lo segundo es decirte que nhibernate tiene manejo contextuales de la > sessión, por lo tanto lo que sabemos hacer es inyectar en el constructor del > Dao, ISessionFactory. Recordar que la configuración, y el build de la > session factory debería hacerse una sola vez al inicio. > > Al inyectar ISessionFactory se le puede pedir a este objeto > GetCurrentSession(), y sobre esa sesión hacer las operaciónes que vos decís. > De esta manera el dao queda agnostico a donde lo uses, y al manejo > contextual que utilices. > > Para un proyecto web lo que todo el mundo usa es session-per-request, sobre > lo cual te recomiendo mi > artículo:http://jfromaniello.blogspot.com/2009/11/como-usar-session-per-reques... > <http://jfromaniello.blogspot.com/2009/11/como-usar-session-per-reques...>(son > solo 100 páginas) > > Para un proyecto winforms, donde no hay capas distribuidas físicamente, lo > que yo utilizó es la forma AOP de Conversation-per-business > transaction:http://fabiomaulo.blogspot.com/2009/01/aspect-conversation-per.html > > En unhaddins hay ejemplos de CpBT para winforms, wpf, asp.net mvc, asp.net, > monorail etc. > > El 7 de diciembre de 2009 11:18, Argons <[email protected]> escribió: > > > > > > > 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- Ocultar texto de la cita - > > - Mostrar texto de la cita - --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
