1
我對NHibernate相當新穎,我試圖想出一個很好的模式,使用工作單元模式與NHibernate會話,但允許使用不同的Connection Strings
連接到不同的數據庫/作爲不同的用戶。管理多個NHibernate會話/ UnitOfWork
我傾向於工廠模式,因爲我需要這個與Oracle和SQL Server一起工作。
我正在使用流利的NHibernate。
有什麼建議嗎?
我對NHibernate相當新穎,我試圖想出一個很好的模式,使用工作單元模式與NHibernate會話,但允許使用不同的Connection Strings
連接到不同的數據庫/作爲不同的用戶。管理多個NHibernate會話/ UnitOfWork
我傾向於工廠模式,因爲我需要這個與Oracle和SQL Server一起工作。
我正在使用流利的NHibernate。
有什麼建議嗎?
對於每個連接字符串,您將需要不同的ISessionFactory(來自不同的配置)。
這是ISessionFactory Factory的一個非常粗糙的實現。請注意,配置可能在許多方面有所不同(例如在DLL作用域中),而不僅僅是連接字符串。因此,您可能很快需要將整個configSection
傳遞給您的_buildConfiguration
,或者通過自定義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;
}
希望這將有助於