NHibernate ISessionFactory.OpenSession()不会打开数据库连接

时间:2011-05-31 20:34:13

标签: nhibernate postgresql npgsql

我将NHibernate配置为使用Fluent NNibernate连接到PostgreSQL数据库。

我有一个worker类,它将ISessionFactory作为构造函数参数并使用来自队列的消息。对于每个消息,工作进程调用ISessionFactory.OpenSession()并执行一些数据库处理。

当我添加更多工作进程时,系统的性能保持不变,这是奇怪的。 经过一番调查后,我意识到所有工作进程都在使用单个数据库连接。例如,我会添加8个工作进程,但在数据库中我只能看到一个数据库连接。

我的理解是,除非连接池已满,否则ISessionFactory.OpenSession()将打开一个新的数据库连接。

我的理解是错误的,或者是Postgres NHibernate驱动程序的问题。

2 个答案:

答案 0 :(得分:3)

OpenSession在需要之前不会打开数据库连接,并且会尽快关闭它(即将其释放回池中)。

答案 1 :(得分:3)

默认情况下,会话将保持连接在事务的生命周期内保持打开状态,正如Diego所说,它只在需要时打开它。

如果您想管理自己的连接,可以致电

ISessionFactory.OpenSession(myConnection);
相关问题