C# 扩展NHibernate DriverConnectionProvider类

C# 扩展NHibernate DriverConnectionProvider类,c#,asp.net-mvc,oracle,nhibernate,C#,Asp.net Mvc,Oracle,Nhibernate,我正在开发一个旧的web应用程序。它扩展了NHibernate的DriverConnectionProvider,以发出db连接。下面是代码 public class NewConnectionProvider : DriverConnectionProvider { public override System.Data.IDbConnection GetConnection() { IDbConnection conn = base.GetConnection()

我正在开发一个旧的web应用程序。它扩展了NHibernate的
DriverConnectionProvider
,以发出db连接。下面是代码

public class NewConnectionProvider : DriverConnectionProvider
{
   public override System.Data.IDbConnection GetConnection()
   {
        IDbConnection conn = base.GetConnection();       
        //execute a SP here.. to set up proxy user to connect to
        //oracle db
       return conn;
   }

}

 //connection string
<add name="connname" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = 
(PROTOCOL = TCP)(HOST = .....)(PORT = ....)))(CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = ....)));Min Pool Size=5;Max Pool Size=500;Proxy User Id=....; 
 Proxy Password=.....;Validate Connection=True;Connection Timeout=100;" />
公共类NewConnectionProvider:DriverConnectionProvider
{
public override System.Data.IDbConnection GetConnection()
{
IDbConnection conn=base.GetConnection();
//在此处执行SP..以设置要连接的代理用户
//甲骨文数据库
返回连接;
}
}
//连接字符串

问题:我们遇到的问题是#个连接被加至连接字符串的
最大池大小。有时我们会遇到连接超时错误。在这种情况下,连接池是如何工作的?我是否也需要覆盖驱动器连接提供程序.CloseConnection
?如果是,我需要什么时候打电话?系统正在使用NHibernate、Oracle 11g。

显示连接从未关闭。您可能需要实施

public void CloseConnection(IDbConnection connection)
在您的ConnectionProvider中