我收到的時候我試圖讓CurrentSessionNHibernate.HibernateException:沒有綁定到當前上下文
NHibernate.Context.CurrentSessionContext.CurrentSession()
此錯誤會話中
NHibernate.Impl.SessionFactoryImpl.GetCurrentSession()
我收到的時候我試圖讓CurrentSessionNHibernate.HibernateException:沒有綁定到當前上下文
NHibernate.Context.CurrentSessionContext.CurrentSession()
此錯誤會話中
NHibernate.Impl.SessionFactoryImpl.GetCurrentSession()
你是負責設置當前會話在會話上下文中。請參閱NHibernate文檔的this section。如果你還沒有這樣做,那麼將沒有當前會話來檢索。
就像David M說的,你需要確保你綁定了你的NHibernate會話。下面是我做的,現在在我的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
}
}
我創建一個綁定在每次請求我的會議自定義的HttpModule,然後我這個模塊添加到我的web.config這樣的:
<httpModules>
<add name="NHHttpModule" type="MyApplication.Core.NHHttpModule, MyApplication,
Version=1.0.0.0, Culture=neutral" />
</httpModules>
我確定你的配置不同於此,但這只是我綁定會話的一個例子。希望這有所幫助。
Studio 2010將創建2個httpModules節,一個用於IIS 7.確保在system.web中註冊您的nhibernate httpmodule。
天才,謝謝你的回答,救了我從一個巨大的'臉上的蛋'事件:) – 2010-10-06 08:02:09