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 の場合は、Disconnect ではなく Close を呼び出す必要があると思います。

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 に答える