【发布时间】:2010-12-31 09:29:45
【问题描述】:
如何使用 App.config 中的 System.Configuration.ConfigurationManager 将应用程序设置加载到 NHibernate.Cfg.Configuration 对象?
【问题讨论】:
标签: nhibernate app-config configurationmanager
如何使用 App.config 中的 System.Configuration.ConfigurationManager 将应用程序设置加载到 NHibernate.Cfg.Configuration 对象?
【问题讨论】:
标签: nhibernate app-config configurationmanager
hibernate 配置也可以移到 app.config 中,这样可以简化启动代码。请参阅 NHibernate 参考手册中的 XML Configuration File 部分。
Configuration cfg = new NHibernate.Cfg.Configuration();
ISessionFactory sf = cfg.Configure().BuildSessionFactory();
在 app.config 中:
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.connection_string_name">Northwind</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
<mapping assembly="assemblyname" />
</session-factory>
</hibernate-configuration>
<connectionStrings>
<add name="Northwind" connectionString="Data Source=(local);Initial Catalog=Northwind;Trusted_Connection=True;>
</connectionStrings>
</configuration>
【讨论】:
app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="Northwind" connectionString=
"Data Source=(local);Initial Catalog=Northwind;Trusted_Connection=True;>
</connectionStrings>
</configuration>
C#代码:
string connectionString = System.Configuration.ConfigurationManager
.ConnectionStrings["Northwind"].ToString();
NHibernate.Cfg.Configuration nHibernateConfiguration =
new NHibernate.Cfg.Configuration();
nHibernateConfiguration.SetProperty(
NHibernate.Cfg.Environment.ProxyFactoryFactoryClass,
typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory).AssemblyQualifiedName);
nHibernateConfiguration.SetProperty(
NHibernate.Cfg.Environment.Dialect,
typeof(NHibernate.Dialect.MsSql2005Dialect).AssemblyQualifiedName);
nHibernateConfiguration.SetProperty(
NHibernate.Cfg.Environment.ConnectionString, connectionString);
nHibernateConfiguration.SetProperty(
NHibernate.Cfg.Environment.FormatSql, "true");
nHibernateConfiguration.AddAssembly(Assembly.GetCallingAssembly());
ISessionFactory oneISessionFactory = nHibernateConfiguration
.BuildSessionFactory();
【讨论】:
connection_string_name。请参阅 How to configure NHibernate to use connection string from <connectionStrings> configuration section 和 @LachlanRoche 的回答。
ConfigurationManager,它不是很(跨项目)DRY 来重写相同的功能。