Skip to content

Commit 46cf6e5

Browse files
Document the configuration provider (#2431)
1 parent a6a8267 commit 46cf6e5

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

doc/reference/modules/configuration.xml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,45 @@ var session = sessions.OpenSession(conn);
433433

434434
</sect1>
435435

436+
<sect1 id="configuration-provider">
437+
<title>Using a custom configuration provider</title>
438+
439+
<para>
440+
By default, NHibernate attempts to read the <literal>hibernate-configuration</literal> section
441+
through the .Net <literal>ConfigurationManager</literal>. Some environments do not support it, so
442+
NHibernate provides a way to set a custom configuration provider, through the
443+
<literal>NHibernate.Cfg.ConfigurationProvider.Current</literal> property.
444+
</para>
445+
446+
<para>
447+
To disable the configuration provider, in case you configure NHibernate entirely programmatically,
448+
set this property to <literal>null</literal>.
449+
</para>
450+
451+
<programlisting><![CDATA[ConfigurationProvider.Current = null;]]></programlisting>
452+
453+
<para>
454+
To provide directly the <literal>System.Configuration.Configuration</literal> instance to use, assign
455+
the <literal>Current</literal> property with an instance of
456+
<literal>NHibernate.Cfg.SystemConfigurationProvider</literal> built with your
457+
<literal>Configuration</literal> instance.
458+
</para>
459+
460+
<programlisting><![CDATA[ConfigurationProvider.Current = new SystemConfigurationProvider(yourConfig);]]></programlisting>
461+
462+
<para>
463+
You may also derive a custom provider from <literal>NHibernate.Cfg.ConfigurationProvider</literal>,
464+
implements its abstract methods, and assign an instance of your custom provider to the
465+
<literal>NHibernate.Cfg.ConfigurationProvider.Current</literal> property.
466+
</para>
467+
468+
<para>
469+
Changes of the <literal>ConfigurationProvider.Current</literal> property value are to be done very
470+
early in the application lifecycle, before any other call on a NHibernate API. Otherwise they
471+
may not be taken into account.
472+
</para>
473+
</sect1>
474+
436475
<sect1 id="configuration-optional">
437476
<title>Optional configuration properties</title>
438477

0 commit comments

Comments
 (0)