具有相同实体的不同数据库服务器的nhibernate会话

时间:2009-11-10 20:02:49

标签: nhibernate sessionfactory

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

  

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

如何解决此问题?

更新 这是堆栈跟踪:

at NHibernate.Connection.ConnectionProvider.Configure(IDictionary 2 settings) at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary 2个设置)    在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:第93行

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

演示文稿 - >服务层| - > projectName.dataAccess.usa.EntityRepository                               | - > projectName.dataAccess.can.EntityRepository