c# - 从 SessionFactory 获取 ConnectionProvider

标签 c# database nhibernate connection

要执行一些自定义(黑盒化)SQL 操作,我需要有一个 IDBConnection 实例到我们已经通过 NHibernate 定期访问的数据库。

我不想部署单独的数据库配置(一个本地的,一个 nhibernate),而是希望 NHibernate 给我直接访问已经配置的数据库。

我看到 ISession 接口(interface)有一个连接属性,我可以创建一个虚拟 session ,但我宁愿使用一个完全独立于任何创建的 session 的连接。

所以我想知道是否有机会获得 session 工厂用来为创建的 session 提供连接的 IConnectionProvider 实例?

最佳答案

此解决方案依赖于 NHibernate 的实现细节。它在我使用它的所有情况下都有效,但在升级 NHibernate 后情况可能并非如此。

假设您有我们的字段 ISessionFactory _sessionFactory,您可以使用以下转换来访问连接提供程序。尽管文档说接口(interface) ISessionFactoryImplementor 用于 session 工厂和 NHibernate 其他部分之间的通信,但它是公开的。

(_sessionFactory as NHibernate.Engine.ISessionFactoryImplementor).ConnectionProvider

关于c# - 从 SessionFactory 获取 ConnectionProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24751670/

相关文章:

c# - ASP.NET Web 应用程序中的动态图像

mysql - SQL查询分组依据和全部

android - 弄清楚sqlite android查询的麻烦

mysql - 将 NHibernate SchemaUpdate 与 MySQL 一起使用时出现问题 - 没有错误,但没有任何反应!

c# - Stylecop - 类 x 在我的继承层次结构中吗?

c# - 在 xamarin android 中删除 ListView

c# - 线程安全类是否应该在其构造函数的末尾设置内存屏障?

mongodb - 先分组、排序、选择

c# - NHibernate 惰性问题

mysql - 如何在不安装 mysql 连接器 msi 的情况下引用 nhibernate 中的 mysql 连接器?