2014-01-10 64 views
0

所以我有一個靜態類用於創建一個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的使用多個不同的數據庫的例子。

回答

0

神祕的是,對代碼沒有任何改變,這已經開始起作用。如果出現,它可能是Visual Studio 2010的開發Web服務器的緩存問題(因爲這是在ASP.NET應用程序中託管的WCF服務的一部分)。