2009-12-31 150 views

回答

18

的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(); 
+0

而不是做配置管理器中所获得的价值的体力劳动,可以尝试设置'connection_string_name'。请参阅[如何配置NHibernate使用连接字符串从配置节](http://stackoverflow.com/questions/455664/how-to-configure-nhibernate-to-use-connection-string-from-connectionstrings- co)和@ LachlanRoche的回答。 – 2012-04-05 21:43:32

+2

@Joel:在你投降之前你有没有读过这个问题?它专门调用System.Configuration.ConfigurationManager。 Lachlan的回答很有帮助,但它并没有回答被问到的问题。 – 2012-04-06 12:41:02

+0

考虑到NHibernate也使用'ConfigurationManager',它不是非常(交叉项目)DRY来重写相同的功能。 – 2012-04-06 18:13:18

22

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> 
+0

中的xmlns =“urn:nhibernate-configuration-2.2”非常重要。我没有它,并不断出现错误。谢谢@Lachlan_Roche – Brij 2018-01-26 10:01:49

相关问题