我在我的应用程序中遇到了问题:我有两个数据库,我想用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>
然后创建2个独立的( nhibernate)配置文件与nhibernate配置(如果你有2个不同的数据库)。
我使用一个类,它允许我创建一个会话工厂:
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());
}
}
现在,我可以创造出许多不同的会话工厂用自己的具体配置:
var sessionFactory1 = new NHibernateSessionFactory("connection string 1", "sql.nhibernate").SessionFactory;
var sessionFactory2 = new NHibernateSessionFactory("connection string 2", "ora.nhibernate").SessionFactory;
你可以找到更多信息here。
1
对于每个数据库,您都需要一个自己的SessionFactory。如果省略的ConnectionString在新罕布什尔州的配置,你可以在代码中指定它在构建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();
相关问题
- 1. 如何在C++中连接两个字符串* arr []
- 2. 如何在C++中连接两个字符串?
- 3. 传递连接字符串
- 4. 如何使用C中的宏连接两个宽字符串?
- 5. 在tcl中连接两个字符串
- 6. 在C#中使用字符串连接的字符串连接
- 7. 如何在android中的两个类之间传递字符串?
- 8. 如何传递两个字符串中的“StringRequest”在android
- 9. 如何连接两个字符串?
- 10. 如何连接两个_T字符串?
- 11. 如何在C++中连接字符串+ int +字符串?
- 12. 如何在我的nhibernate配置中注入连接字符串?
- 13. 连接两个字符串
- 14. 在C++中连接两个字符串(二进制数加法)
- 15. 如何在控制器中连接两个字符串angularjs
- 16. 如何在erlang中连接两个utf8字符串?
- 17. 如何在NHibernate中动态设置连接字符串
- 18. 如何通过C++中的两个字符串交替字符串连接字符串?
- 19. 用于连接C中的两个字符串的宏
- 20. SQL Server 2005中:两个或多个字符串连接成一个字符串,并传递作为参数
- 21. 将连接字符串传递给dll?
- 22. 如何在#中传递字符串#
- 23. 如何连接SQL Server 2005中的两个字符串
- 24. 如何连接两个数组中的字符串?
- 25. 在c中的字符串连接分布在两行
- 26. C/C++中的连接字符串
- 27. 如何在重写时传递连接字符串UserNamePasswordValidator
- 28. 如何连接到C#中的一个连接字符串中的两个数据库?
- 29. 如何连接两个字符串与C和MinGW?
- 30. 如何在Xcode中连接URL中的字符串(Objective-c)?