2011-07-11 5 views

Respuesta

7

No parece que ThreadLocalSessionContext actualmente se puede utilizar. No hay ninguna configuración que admita su uso y solo se hace referencia en NHibernate mediante una prueba unitaria.

De acuerdo con el código CallSessionContext es una forma de manejar sesiones en .Net remoto, vea los comentarios en el código a continuación para obtener más detalles. Parece que NHibernate básicamente almacena la sesión en el contexto de llamada remota. Más información sobre los contextos de interacción remota de llamadas se puede encontrar here

/// <summary> 
/// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> 
/// for each <see cref="System.Runtime.Remoting.Messaging.CallContext"/>. 
/// Not recommended for .NET 2.0 web applications. 

ThreadStaticSessionContext se utiliza para el manejo de sesiones en las aplicaciones de subprocesos múltiples. Utiliza un atributo [ThreadStatic] para declarar la sesión de modo que haya una sesión por hilo. Actualmente uso esto. Ver este SO vínculo para un ejemplo de código de cómo se usa: What is the best NHibernate session management approach for using in a multithread windows service application?

también, además de esto se ve como NHibernate es la adición de otro contexto de la sesión en la versión 3.2 llamada WcfOperationSessionContext. A continuación se muestra la descripción del código:

/// <summary> 
/// Provides a <see cref="ISessionFactory.GetCurrentSession()">current session</see> 
/// for the current OperationContext in WCF. Works only during the lifetime of a WCF operation. 
/// </summary> 

para responder a su segunda pregunta que realmente depende de qué tipo de aplicación que se está implementando y cómo está utilizando sus sesiones. Es de esperar que, entre la documentación de nhibernate y las descripciones anteriores, tenga una mejor idea de qué contexto debe usar.