【问题标题】:nhibernate session for different database servers with same entity具有相同实体的不同数据库服务器的休眠会话
【发布时间】:2010-12-15 05:04:02
【问题描述】:

我们在 Web 应用程序中使用两个数据库。一个在美国,一个在加拿大。您应该只看到基于您所在国家/地区的数据。现在我认为在创建 SessionFactory 对象时会出现问题,因为实体已经为美国创建。现在,当 nHibernate 尝试使用相同的实体为 CAN 数据库创建工厂时,我收到以下错误:

找不到连接字符串设置(设置 connection.connection_string 或 connection.connection_string_name 属性)

我该如何解决这个问题?

更新: 这是堆栈跟踪:

在 NHibernate.Connection.ConnectionProvider.Configure(IDictionary2 settings) at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary2 设置) 在 NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 属性) 在 NHibernate.Cfg.Configuration.BuildSettings() 在 NHibernate.Cfg.Configuration.BuildSessionFactory() 在 FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() 中的 d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 93

【问题讨论】:

    标签: nhibernate sessionfactory


    【解决方案1】:

    你可以试试 NHibernate.Shards。它仍在开发中,但可能对您有用。 http://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Shards/

    【讨论】:

      【解决方案2】:

      这里只是一个想法,但鉴于您的 DAL 正在连接到两组不同基础设施上的两个不同数据源,您是否应该为 CAN 启动一个 NHibernate 会话实例和为美国启动一个 NHibernate 会话实例......并且然后合并查询后的结果?使用一个会话来查询两个绝望的数据源听起来不像是正确的方法......即使它在物理上是可能的。我认为应该在这里应用关注点分离。

      presentation -> 服务层 |-> projectName.dataAccess.usa.EntityRepository |-> projectName.dataAccess.can.EntityRepository

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 2020-02-16
        • 2018-11-30
        相关资源
        最近更新 更多