【发布时间】:2014-06-19 14:30:36
【问题描述】:
我正在使用 Nhibernate 连接到 Oracle 11g 数据库。数据库管理员让我看一下程序,因为有很多不活动的会话处于打开状态,显然这很快就会导致服务器崩溃。
为什么 Nhibernate 不关闭连接?下面是代码示例:
public void Foo()
{
using (_sessionFactory = _Configuration.BuildSessionFactory())
using (_session = _sessionFactory.OpenSession())
{
_session.Transaction.Begin();
//DO STUFF
_session.Transcation.Commit();
}
}
我的印象是,处理 session 和 sessionFactory 会调用 session.Close() 并且连接会关闭。
这只是连接池的工作吗?如果是这样,有没有办法可以设置连接池的最大大小?最好是流利的 Nhibernate?
【问题讨论】:
-
您可以更改连接字符串中的池化。
-
@Fran 啊我不知道,它的语法是什么。如果我一次需要 11 个连接并且最大池大小设置为 10,会发生什么情况?
-
请参阅此处 (connectionstrings.com/oracle) 以获取连接字符串帮助。如果池中的所有连接都用完并且池自身增加 1,则您可能有 11 个。连接字符串以及最大池大小都提供了增量/减量大小。
-
@Fran 太好了,这仅适用于 Nhibernate?对于基本问题,抱歉,以前从未听说过这些设置。
-
应该的。请记住,在幕后 nhibernate 只是使用 ado.net 连接,这些都是连接字符串的有效选项。
标签: c# oracle nhibernate fluent-nhibernate