NHibernate异常"会话已关闭!对象名称:'ISession'."

nRk*_*nRk 2 .net c# nhibernate

我从NHibernate得到了folloinwg错误:

System.ObjectDisposedException: Session is closed! Object name: 'ISession'.
   at NHibernate.Impl.AbstractSessionImpl.ErrorIfClosed()
   at NHibernate.Impl.AbstractSessionImpl.CheckAndUpdateSessionStatus()
   at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
   at NHibernate.Impl.SessionImpl.Save(Object obj)
Run Code Online (Sandbox Code Playgroud)

我在.net windows服务中使用NHibernate.
我无法追踪异常的精确问题.此异常经常发生.
任何人都可以帮我解决这个问题吗?


NRK

Ber*_*ryl 6

我猜你是在一个使用的构造中不止一次地包装你的会话,如下所示.你能发布一些会话使用代码吗?

HTH,
Berryl

错误 - 在第一次使用构造后会话关闭:

using(var session = _sessionFactory.GetCurrentSession()
using(var tx = _session.BeginTransaction(){
    ... do something
    tx.Commit();
}


using(var session = _sessionFactory.GetCurrentSession()
using(var tx = _session.BeginTransaction(){
    ... do something else
}
Run Code Online (Sandbox Code Playgroud)

更好 - 会话在工作完成后关闭

var session = _sessionFactory.GetCurrentSession();

using(var tx = _session.BeginTransaction(){
    ... do something
    tx.Commit();
}


using(var tx = _session.BeginTransaction(){
    ... do something else
    tx.Commit()
}
session.Close()
Run Code Online (Sandbox Code Playgroud)