2013-04-24 2 views

답변

3

가 난 보통 내 app.config에 연결 문자열을 정의 : 다음

<connectionStrings> 
    <add name="connection1" connectionString="Data Source=;User ID=;Password=;" /> 
    <add name="connection2" connectionString="Data Source=;User ID=;Password=;" /> 
    </connectionStrings> 

(I 별도의 2를 만들 당신이 당신의 NH의 설정에서 ConnectionString을 생략하면 당신의 SessionFactory를 구축하는 동안, 당신은 코드에 지정할 수 있습니다 nhibernate) 설정 파일을 nhibernate 설정으로 저장한다.

var sessionFactory1 = new NHibernateSessionFactory("connection string 1", "sql.nhibernate").SessionFactory; 

var sessionFactory2 = new NHibernateSessionFactory("connection string 2", "ora.nhibernate").SessionFactory; 

당신은 더 많은 정보를 찾을 수 있습니다 나는 자신의 특정 구성과 다양한 세션 공장을 만들 수 있습니다 지금

public class NHibernateSessionFactory 
    { 
     private ISessionFactory sessionFactory; 

     private readonly string ConnectionString = ""; 
     private readonly string nHibernateConfigFile = ""; 

     public NHibernateSessionFactory(String connectionString, string nHConfigFile) 
     { 
      this.ConnectionString = connectionString; 
      this.nHibernateConfigFile = nHConfigFile; 
     } 

     public ISessionFactory SessionFactory 
     { 
      get { return sessionFactory ?? (sessionFactory = CreateSessionFactory()); } 
     } 

     private ISessionFactory CreateSessionFactory() 
     { 
      Configuration cfg; 
      cfg = new Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, this.nHibernateConfigFile)); 

      // With this row below Nhibernate searches for the connection string inside the App.Config. 
      // cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionStringName, System.Environment.MachineName); 
      cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, this.ConnectionString); 

#if DEBUG 
      cfg.SetProperty(NHibernate.Cfg.Environment.GenerateStatistics, "true"); 
      cfg.SetProperty(NHibernate.Cfg.Environment.ShowSql, "true"); 
#endif 

      return (cfg.BuildSessionFactory()); 
     } 
    } 

:

나는 나를 세션 공장을 만들 수 있습니다 하나 개의 클래스를 사용 here.

1

각 데이터베이스에 대해 고유 한 SessionFactory가 필요합니다.

var sessionFactory1 = new Configuration() 
        .Configure() 
        .SetProperty("connection.connection_string", "First Connection String").BuildSessionFactory(); 

var sessionFactory2 = new Configuration() 
        .Configure() 
        .SetProperty("connection.connection_string", "Second Connection String").BuildSessionFactory();