我们在网络应用程序中使用两个数据库。一个位于美国,一个位于加拿大。您应该只看到基于您所在国家/地区的数据。现在我认为在创建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行
答案 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