Session Fluent NHibernate+多个数据库=Fluent.Configure()映射到错误的数据库?
因此,我有一个静态类,用于创建NHibernate iSessionFactorys的字典,我需要为我访问的每个数据库/方言创建一个字典。现在我肯定遗漏了什么,因为当我的代码100%适用于单个数据库时,尝试配置第二个数据库失败了,结果是因为它仍然映射到初始数据库,我通过从新数据库添加一个表到旧数据库来确认这一点,并观察它的工作情况。以下是我的代码注释:Session Fluent NHibernate+多个数据库=Fluent.Configure()映射到错误的数据库?,session,fluent-nhibernate,mapping,factory,Session,Fluent Nhibernate,Mapping,Factory,因此,我有一个静态类,用于创建NHibernate iSessionFactorys的字典,我需要为我访问的每个数据库/方言创建一个字典。现在我肯定遗漏了什么,因为当我的代码100%适用于单个数据库时,尝试配置第二个数据库失败了,结果是因为它仍然映射到初始数据库,我通过从新数据库添加一个表到旧数据库来确认这一点,并观察它的工作情况。以下是我的代码注释: public static class NHibernateFactory { private static Dictionary&
public static class NHibernateFactory {
private static Dictionary<String, ISessionFactory> _sessionFactory = new Dictionary<String, ISessionFactory>();
public static void Initialize(Assembly assembly, String ConnectionStringKey) {
if (ConfigurationManager.ConnectionStrings[ConnectionStringKey] != null) {
IPersistenceConfigurer dbConnection = null;
switch (ConfigurationManager.ConnectionStrings[ConnectionStringKey].ProviderName.ToLower()) {
.
. Various cases here for each type of database/dialect
.
case "system.data.sqlite":
switch (ConfigurationManager.AppSettings[ConnectionStringKey].ToLower()) {
case "standard": dbConnection = SQLiteConfiguration.Standard.ConnectionString(c => c.FromConnectionStringWithKey(ConnectionStringKey));
break;
}
break;
.
.
.
}
if (dbConnection != null) {
_sessionFactory.Add(ConnectionStringKey, Fluently.Configure()
.Database(
dbConnection
)
.Mappings(m => {
m.FluentMappings.AddFromAssembly(assembly);
})
.BuildSessionFactory()
);
}
}
}
public static ISession OpenSession(String ConnectionStringKey) {
return _sessionFactory[ConnectionStringKey].OpenSession();
}
}
现在,我确信正确的组件和连接Stringkey正在通过。我可以看到dbConnection也得到了正确的设置。因此,它在m.FluentMappings.AddFromAssemblyassembly上失败对我来说是完全令人困惑的;创建SessionFactory时使用了无效或不完整的配置。错误消息
正如我所说的,在跟踪它之后,它似乎是由于它仍然引用初始配置中的DB。有人知道为什么会这样吗?也许有什么我误解了
有没有人举过设置Fluent NHibernate用于多个不同数据库的例子 奇怪的是,在代码没有任何更改的情况下,这已经开始起作用了。如果出现这种情况,则可能是Visual Studio 2010的开发Web服务器存在缓存问题,因为这是托管在ASP.NET应用程序中的WCF服务的一部分