1

我正在使用 Nhibernate 连接到数据库

_sessionFactory = configuration.BuildSessionFactory();
_sessionFactory = configuration.BuildSessionFactory();
_session = _sessionFactory.OpenSession(new DbInterceptor());
_sessionForSequenceQuery = _sessionFactory.OpenSession();
_sequenceQuery = _sessionForSequenceQuery.CreateSQLQuery("select nextval('sequence')");

当我需要断开与数据库的连接时,我会

_sessionForSequenceQuery.Disconnect();
_session.Disconnect();
_sessionFactory.Dispose();

但是与数据库的物理连接仍然存在。据我了解,当它认为有必要时,它会中断物理连接是 Nhibernate。我如何让他立即这样做?

4

1 回答 1

2

我想对于 _session 你应该调用 Close,而不是 Disconnect:

http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-endingsession-close

Close() 的主要含义是会话将放弃 ADO.NET 连接。

http://nhibernate.info/doc/nh/en/index.html#transactions-disconnection

方法 ISession.Disconnect() 将断开会话与 ADO.NET 连接并将连接返回到池(除非您提供了连接)。

于 2012-08-15T05:57:21.593 回答