Search code examples
nhibernatenhibernate-configuration

NHibernate Configuration in web.config - use existing connectionstring


I have my NHibernate configuration successfully set up in my web.config file. However, I am also using ASP.NET Membership which requires a connectionstring to be defined in the connectionStrings element. Is there a way I can make my NHibernate configuration use this value so I don't need to define the connection string twice?


Solution

  • You can use connection.connection_string_name element in the NHibernate configuration. Have a look here. Then NHibernate will get connection string by name from web.config file

    You need to use the connection.connection_string_name attribute in the configuration:

    <connectionStrings>
        <add name="default" connectionString="server=(local);etc." />
    </connectionStrings>
    
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
        <session-factory>
            <property name="connection.connection_string_name">default</property>
        </session-factory>
    </hibernate-configuration>
    

    With fluent configuration you can do the following

    ConnectionString(c=>c.FromConnectionStringWithKey("YourConnStrName"))
    

    With NHibernate configuration API you can do the following:

    var cfg = new Configuration();
    cfg.DataBaseIntegration(db =>
    {
        db.ConnectionStringName = "default";             
    });