2009-12-31 12 views

Respuesta

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# código:

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

En vez de hacer el trabajo manual de obtener el valor del gestor de configuración, intente establecer 'connection_string_name'. Consulte [Cómo configurar NHibernate para usar la cadena de conexión de la sección de configuración ] (http://stackoverflow.com/questions/455664/how-to-configure-nhibernate-to-use-connection-string-from-connectionstrings- co) y la respuesta de @ LachlanRoche. –

+2

@Joel: ¿Has leído la pregunta antes de rechazar mi voto? Llama específicamente a System.Configuration.ConfigurationManager. La respuesta de Lachlan es útil, pero no responde la pregunta que se hizo. –

+0

Teniendo en cuenta que NHibernate también usa 'ConfigurationManager', no es muy (entre proyectos) DRY para reescribir esa misma funcionalidad. –

22

La configuración de hibernación también se puede mover en app.config, lo que simplifica el código de inicio. Consulte la sección XML Configuration File en el manual de referencia de NHibernate.

Configuration cfg = new NHibernate.Cfg.Configuration(); 
ISessionFactory sf = cfg.Configure().BuildSessionFactory(); 

Y en 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" en la es muy importante. No lo tenía, y seguí recibiendo el error. Gracias @Lachlan_Roche – Brij

Cuestiones relacionadas