2013-04-24 3 views
1

NHibernate에 상당히 익숙하며, NHibernate 세션과 함께 Unit of Work 패턴을 사용하는 좋은 패턴을 생각해 내지 만, 서로 다른 주소로 연결하기 위해 다른 Connection Strings을 사용할 수 있습니다 데이터베이스/다른 사용자로.여러 NHibernate 세션/UnitOfWork 관리하기

오라클과 SQL Server에서 작동하기 때문에 공장 패턴으로 기울고 있습니다.

Fluent NHibernate를 사용하고 있습니다.

제안 사항?

답변

1

각 연결 문자열에 대해 다른 구성의 다른 ISessionFactory가 필요합니다.

다음은 ISessionFactory Factory의 매우 어려운 구현입니다. 구성은 연결 문자열뿐 아니라 다양한 방법 (예 : DLL 범위)에 따라 다를 수 있습니다. 따라서 _buildConfiguration에 전체 configSection을 곧 전달하거나 맞춤 IMyConfigurationBuilder에서 _buildConfiguration을 구현해야 할 수도 있습니다. 이

도움이 될 것입니다

// 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; 
} 

희망

관련 문제