如何将应用程序设置加载到NHibernate.Cfg.Configuration对象?

use*_*312 11 nhibernate configurationmanager app-config

如何NHibernate.Cfg.Configuration使用System.Configuration.ConfigurationManagerApp.config 将应用程序设置加载到对象?

Lac*_*che 24

hibernate配置也可以移动到app.config中,这简化了启动代码.请参阅NHibernate参考手册中的XML配置文件一节.

Configuration cfg = new NHibernate.Cfg.Configuration();
ISessionFactory sf = cfg.Configure().BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)


Mic*_*dox 20

的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>
Run Code Online (Sandbox Code Playgroud)

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();
Run Code Online (Sandbox Code Playgroud)

  • @Joel:你在向我推特之前读过这个问题了吗?它专门调用System.Configuration.ConfigurationManager.Lachlan的回答很有帮助,但它没有回答被问到的问题. (2认同)