是否有可能强制NHibernate的无状态会话重用连接?

时间:2012-07-17 15:28:29

标签: nhibernate connection-pooling

当不使用事务时,看起来NHibernate的无状态会话强制在每个语句(读或写)之后关闭连接。

查看代码,结果发生了这种情况,因为ConnectionManager的ConnectionReleaseMode自动设置为AfterTransaction,而不使用事务被解释为执行自己的每个语句事务。

是否有办法更改此行为并允许在会话的整个生命周期内重复使用单个连接?

我使用SqlClientDriver,以防万一。

2 个答案:

答案 0 :(得分:1)

只需将所有内容包装在NHibernate事务中(无论如何都可能是这样)。

当交易打开时,连接也将打开。

答案 1 :(得分:0)

  

是否有办法更改此行为并允许单个连接   在整个会话期间重复使用?

是的。使用“hibernate.connection.release_mode”“on_close”,以便仅在NHibernate会话结束时关闭连接。

重要说明:只有在使用“每次请求会话”或"session-per-conversation"等方法时,此选项才有意义,因为在这些情况下,可能会在事务边界外发生大量“延迟加载”。请参阅:“... This setting is left for backwards compatibility, but excellant use is highly discouraged ...”