Session Fluent NHibernate+多个数据库=Fluent.Configure()映射到错误的数据库?

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&

因此,我有一个静态类,用于创建NHibernate iSessionFactorys的字典,我需要为我访问的每个数据库/方言创建一个字典。现在我肯定遗漏了什么,因为当我的代码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();
    }

  }
现在,我确信正确的组件和连接Stringkey正在通过。我可以看到dbConnection也得到了正确的设置。因此,它在m.FluentMappings.AddFromAssemblyassembly上失败对我来说是完全令人困惑的;创建SessionFactory时使用了无效或不完整的配置。错误消息

正如我所说的,在跟踪它之后,它似乎是由于它仍然引用初始配置中的DB。有人知道为什么会这样吗?也许有什么我误解了


有没有人举过设置Fluent NHibernate用于多个不同数据库的例子

奇怪的是,在代码没有任何更改的情况下,这已经开始起作用了。如果出现这种情况,则可能是Visual Studio 2010的开发Web服务器存在缓存问题,因为这是托管在ASP.NET应用程序中的WCF服务的一部分