从nHibernate获取连接字符串将返回不带密码的字符串

时间:2011-01-13 15:21:28

标签: c# nhibernate hibernate

我需要在nhibernate应用程序上直接访问数据库。我试图得到这样的连接字符串:

    using (SqlConnection conn = new SqlConnection(this.session.Connection.ConnectionString))

但是这将返回没有密码的连接字符串。

我做错了什么?有没有其他方法来获取连接字符串?

2 个答案:

答案 0 :(得分:5)

您可以从NHibernate SessionFactory获取原始数据库连接(使用与NHibernate相同的连接详细信息),例如:

  

IDbConnection连接=   yourSessionFactory.ConnectionProvider.GetConnection()

答案 1 :(得分:0)

ISessionFactory SessionFactory = (NHibernate.Impl.SessionFactoryImpl)session.SessionFactory;//ISession session
        Type typeOfConnectionProvider = typeof(NHibernate.Connection.DriverConnectionProvider);
        PropertyInfo ConnectionStringPropertyInfo = typeOfConnectionProvider.GetProperty("ConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
        string connectionString = (string)ConnectionStringPropertyInfo.GetValue(((NHibernate.Connection.ConnectionProvider)((NHibernate.Impl.SessionFactoryImpl)SessionFactory).ConnectionProvider), null);