Ну, это может быть сложно, но я думаю, что это не должно быть сделано, но вот идея:
var cfg = new Configuration(); // Get a new NHibernate Configuration
cfg.SetProperty("connection.connection_string", yourConnectionString); // Alter the property
cfg.Configure(); // Configure with this configuration
var sf = cfg.BuildSessionFactory(); // Get a new ISessionFactory
Я не знаю, является ли это лучшим методом, но может сработать. Вы также можете иметь 2 xml-файла конфигурации и сделать это:
var cfg = new Configuration("hibernate1.cfg.xml"); // OR
var cfg = new Configuration("hibernate2.cfg.xml");
Отвечая на комментарии, вы можете иметь несколько инициализированных и готовых к использованию сеансовых фабрик, но это не совсем «изменить строку подключения». Затем выберите тот, который вам нужен. Дорогая часть создает объект конфигурации и вызывает Configure ().
Также есть библиотека NHibernate Burrow, которая управляет несколькими сессиями одновременно и выбирает правильную в зависимости от сущности.
var session = new BurrowFramework().GetSession(); // default session
var session = new BurrowFramework().GetSession(typeof(Entity)); // session that manages Entity class