1

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

查看代码,发现这是因为 ConnectionManagerConnectionReleaseMode自动设置为AfterTransaction,并且不使用事务被解释为在其自己的事务中执行每个语句。

有没有办法改变这种行为并允许在会话的整个生命周期内重复使用单个连接?

我正在使用 SqlClientDriver,以防万一。

4

2 回答 2

1

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

当事务打开时,连接也将打开。

于 2012-07-18T15:31:07.090 回答
0

有没有办法改变这种行为并允许在会话的整个生命周期内重复使用单个连接?

就在这里。使用 " hibernate.connection.release_mode " "on_close" 以便仅在 NHibernate 会话关闭时关闭连接。

重要提示:仅当您使用“每个请求的会话”或“每个会话的会话”之类的方法时,此选项才有意义,因为在这些情况下,可能会在事务边界之外发生大量“延迟加载”。请参阅:“......此设置是为了向后兼容而保留的,但强烈建议不要使用它......”

于 2012-07-18T05:35:10.347 回答