是否将NHibernate会话关闭数据库连接作为参数提供给OpenSession方法

时间:2010-05-28 05:39:58

标签: nhibernate

我想知道Nihbernate是否将作为参数提供的数据库连接关闭到OpenSession方法。

实施例

using(var session = sessionFactory.OpenSession(connection))
{

}

我希望连接与会话一起处理。

祝你好运, Alexey Zakharov

2 个答案:

答案 0 :(得分:0)

我用自定义的DriverConnectionProvider解决了我的问题

public class TenantConnectionProvider : DriverConnectionProvider
{
    public override IDbConnection GetConnection()
    {
        IDbConnection conn = Driver.CreateConnection();
        try
        {
            conn.ConnectionString = // Tenant connection string provider called here
            conn.Open();
        }
        catch (Exception)
        {
            conn.Dispose();
            throw;
        }

        return conn;


   }
}

在这种情况下,我可以使用OpenSession方法而不提供连接字符串作为参数。

答案 1 :(得分:0)

它没有。 NHibernate会话只管理它创建的连接的生命周期;如果连接是从外部提供的,则会话永远不会关闭,即使Dispose()也是如此。