Для каждой строки соединения вам понадобится другой ISessionFactory, с другой конфигурацией.
Вот очень грубая реализация для фабрики ISessionFactory. Обратите внимание, что конфигурации могут различаться разными способами (например, в области DLL), а не только строками соединения. Поэтому вам может понадобиться передать весь configSection
на ваш _buildConfiguration
или у вас есть _buildConfiguration
, реализованный пользовательским IMyConfigurationBuilder.
// The main method to be called with "oracle" or "sqlserver" as parameter
public NHibernate.ISessionFactory BuildSessionFactory(string configName)
{
return GetConfiguration(configName).BuildSessionFactory();
}
public NHibernate.Cfg.Configuration GetConfiguration(string configName)
{
switch (configName)
{
case "oracle": return _buildConfiguration("connectionstringtoOracleFromApplicationConfig");
case "sqlserver": return _buildConfiguration("connectionstringtoSqlserverFromApplicationConfig");
}
return null;
}
private NHibernate.Cfg.Configuration _buildConfiguration(string connectionString)
{
var cfg = new Configuration();
//.
//.
cfg.Properties.Add("connection.connection_string", connectionString);
//.
//.
return cfg;
}
Надеется, что это поможет