NHibernate异常:事务未连接或已断开连接

Mar*_*ijn 12 c# nhibernate asp.net-mvc-3

在我们的开发环境中,所有ASP.NET应用程序都运行良好.但是,当我在测试计算机上部署站点时,在某些页面上我得到以下异常:

NHibernate.TransactionException: Transaction not connected, or was disconnected
   at NHibernate.Transaction.AdoTransaction.CheckNotZombied() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 406
   at NHibernate.Transaction.AdoTransaction.Rollback() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line 240
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题.唯一的区别是数据库版本:开发:10.0.5500(2008 R2,SP1,Express)测试:10.0.5500(2008,SP3)

有人知道这里发生了什么吗?

Dan*_*tle 30

这是一个评论,但我也有同样的问题.

当触发器导致数据库级异常时,可能会发生此错误.这将导致事务回滚,因此异常.

  • 是的,就我而言,我插入的字符串比数据库字段接受的字符串长.错误消息不是很有用. (3认同)
  • 是的。我在插入的数据中有一些数据类型不匹配,我从 NHibernate 得到了这个难以理解的错误。如果他们能够通过 Sql 的错误而不是这种令人困惑的废话,那就太好了。 (2认同)

Jam*_*Ide 5

您的每个请求的会话模式实现存在问题.ASP.NET是多线程的,当线程终止而不是请求结束时会话正在关闭.有很多关于如何管理每个请求的会话的例子,NHibernate有一个内置的NHibernate.Context.WebSessionContext但我更喜欢使用依赖注入框架,比如Ninject.

  • 谢谢你的回复,但我(终于)明白了.有一个触发器会导致异常,从而导致回滚. (7认同)