我需要在nhibernate应用程序上直接访问数据库。我试图得到这样的连接字符串:
using (SqlConnection conn = new SqlConnection(this.session.Connection.ConnectionString))
但是这将返回没有密码的连接字符串。
我做错了什么?有没有其他方法来获取连接字符串?
答案 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);