Pregunta

Estoy consiguiendo este error cuando estoy tratando de obtener el currentSession

NHibernate.Context.CurrentSessionContext.CurrentSession()

a

NHibernate.Impl.SessionFactoryImpl.GetCurrentSession()
¿Fue útil?

Solución

Usted es responsable de establecer la sesión actual en el contexto de la sesión. Ver esta sección de la documentación NHibernate. Si usted no ha hecho esto, entonces no habrá sesión actual va a recuperar.

Otros consejos

Al igual que David M dijo, es necesario asegurarse de que va a enlazar su sesión de NHibernate. Esta es la manera que lo hago en este momento en mi aplicación ASP.NET:

public class NHHttpModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.EndRequest += ApplicationEndRequest;
        context.BeginRequest += ApplicationBeginRequest;
    }

    public void ApplicationBeginRequest(object sender, EventArgs e)
    {
        CurrentSessionContext.Bind(NHSessionFactory.GetNewSession());
    }

    public void ApplicationEndRequest(object sender, EventArgs e)
    {
        ISession currentSession = CurrentSessionContext.Unbind(
            NHSessionFactory.GetSessionFactory());
        currentSession.Close();
        currentSession.Dispose();
    }

    public void Dispose()
    {
        // Do nothing
    }
}

creo un HttpModule personalizado que une mi sesión en cada petición y luego agrego este módulo a mi web.config como esto:

<httpModules>
  <add name="NHHttpModule" type="MyApplication.Core.NHHttpModule, MyApplication,
  Version=1.0.0.0, Culture=neutral" />      
</httpModules>

Estoy seguro de que su configuración es diferente a esto, pero esto es sólo un ejemplo de cómo Ato mi sesión. Espero que esto ayude un poco.

Studio 2010 creará 2 secciones httpModules, uno es para IIS 7. Asegúrese de registrar su HttpModule nhibernate en el system.web uno también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top