【发布时间】:2014-01-29 17:05:54
【问题描述】:
所以我有一个静态类,用于创建 NHibernate ISessionFactories 字典(我访问的每个数据库/方言都需要一个)。现在我必须遗漏一些东西,因为虽然我的代码对单个数据库 100% 有效,但尝试配置第二个数据库失败,结果是因为它仍在映射到初始数据库(我通过从我的新数据库到我的旧数据库,并看着它工作)。这是我的代码(后面会有注释):
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();
}
}
现在,我确定正确的程序集和 connectionstringkey 正在传入。我可以看到 dbConnection 也已正确设置。所以我完全困惑的是它在 m.FluentMappings.AddFromAssembly(assembly); 上失败了。带有“创建 SessionFactory 时使用了无效或不完整的配置”。错误信息。
就像我说的那样,在跟踪它之后,它似乎是由于它仍在从初始配置中引用数据库的事实。任何人都知道为什么会发生这种情况?或许我有什么误解。
有没有人有设置 Fluent NHibernate 以用于多个不同数据库的示例。
【问题讨论】:
标签: session fluent-nhibernate mapping factory