我在我的應用程序中遇到了問題:我有兩個數據庫,我想用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)?