2013-04-24 6 views
1

Я довольно новичок в NHibernate, и я пытаюсь найти хороший шаблон для использования шаблона Unit of Work с NHibernate Sessions, но с учетом различных Connection Strings, которые будут использоваться для подключения к различным базы данных/как разные пользователи.Управление несколькими сеансами NHibernate/UnitOfWork

Я склоняюсь к шаблону Factory, потому что мне нужно это для работы с Oracle и SQL Server.

Я использую Fluent NHibernate.

Любые предложения?

ответ

1

Для каждой строки соединения вам понадобится другой 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; 
} 

Надеется, что это поможет

Смежные вопросы