所以我有一個靜態類用於創建一個NHibernate ISessionFactories字典(我需要爲每個數據庫/方言我訪問)。現在我必須錯過一些東西,因爲當我的代碼對單個數據庫工作100%時,試圖配置第二個數據庫失敗,事實證明這是因爲它仍然映射到初始數據庫(我通過添加我的表新數據庫到我的舊數據庫,並觀看它的工作)。這裏是我的代碼(注將遵循):Fluent NHibernate + Multiple Databases =流利.Configure()映射到錯誤的數據庫?
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時使用了無效或不完整的配置。」錯誤信息。
就像我說過的,在追蹤它之後,它似乎是由於沿線的某處它仍然從初始配置引用數據庫。任何人有任何想法,爲什麼這可能會發生?也許我有些誤解。
有沒有人有一個設置流利NHibernate的使用多個不同的數據庫的例子。