내 응용 프로그램에서 문제가 발생했습니다 : 두 데이터베이스가 있고 NHibernate 함께 액세스 할 수 있지만 구성 파일에서 하나의 데이터베이스에 대해 하나의 연결 문자열이 있습니다. 어떻게 NHibernate에 하나 이상의 연결 문자열을 전달할 수 있습니까?C#에서 Nhibernate에서 두 개의 연결 문자열을 전달하는 방법은 무엇입니까?
3
A
답변
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();