c# - NHibernate 异常 "Session is closed! Object name: ' ISession'。”

标签 c# .net 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)

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


最佳答案

我猜您不止一次将 session 包装在 using 结构中,如下所示。你能发布一些你的 session 使用代码吗?

HTH,
贝瑞尔

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

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
}

更好 - session 在工作完成后关闭

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()

关于c# - NHibernate 异常 "Session is closed! Object name: ' ISession'。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552769/

相关文章:

c# - Mono - XDocument.Load 因 LoadOptions.PreserveWhitespace 而失败

c# - C# 与 C++/CLI 中的 Unicode 字符串文字

c# - 与我将它作为 Windows 应用程序运行时相比,WebMethod() 在每次执行时都很慢

nhibernate - 使用 HiLo ID 生成策略时,应使用哪些类型来保存 ID?

wcf - 工厂被废弃,不能再使用。 NHibernate设施

c# - 使用套接字测试服务器

c# - params object[] 方法参数装箱了吗?

.net - 学习新框架/更新现有企业应用程序的技巧 - .NET

c# - 在 C# 中将 XML 反序列化为类 obj

mysql - 获取下一个id