<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://nhforge.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string.aspx</link><description>Quick starts, tutorials, code snippets, custom user types, application blocks and more...</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string.aspx</link><pubDate>Thu, 08 Sep 2011 00:09:08 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:46</guid><dc:creator>John Davidson</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Current revision posted to How to by John Davidson on 07/09/2011 09:09:08 p.m.&lt;br /&gt;
&lt;h2&gt;Dynamically change user info in connection string&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Mapping, QuickStart&lt;/div&gt;

&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]).&lt;a href="http://www.reviewonlineuniversity.com/universities/hill-university.asp" rel="follow"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Hill&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;University&lt;/span&gt;&lt;/a&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;AND&lt;/span&gt; &lt;a href="http://reviewonlineuniversity.com/universities/woodfield-university.asp" rel="follow"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Woodfield&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;University&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the&amp;nbsp; &lt;a href="http://www.reviewonlineuniversity.com/universities/corllins-university.asp" rel="follow"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Corllins&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;University&lt;/span&gt;&amp;nbsp;standard&amp;nbsp;DriverConnectionProvider
class:&lt;a href="http://www.reviewonlineuniversity.com/universities/ashwood-university.asp" rel="follow"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Ashwood&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;University&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Accreditation&lt;/span&gt;&lt;/a&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;AND&lt;/span&gt; &lt;a href="http://www.reviewonlineuniversity.com/universities/rochieville-university.asp" rel="follow"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Rochville&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;University&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Accreditation&lt;/span&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DynamicConnectionProvider &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DriverConnectionProvider
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private string &lt;/span&gt;_connectionString;
    &lt;span style="color:blue;"&gt;public override void &lt;/span&gt;Configure(&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; settings)
    {

        &lt;span style="color:green;"&gt;// Connection string in the configuration overrides named connection string
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(!settings.TryGetValue(NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString,&lt;span style="color:blue;"&gt;out &lt;/span&gt;_connectionString))
    _connectionString = GetNamedConnectionString(settings);

        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_connectionString == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;HibernateException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not find connection string setting (set &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString + &lt;span style="color:#a31515;"&gt;&amp;quot; or &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionStringName + &lt;span style="color:#a31515;"&gt;&amp;quot; property)&amp;quot;&lt;/span&gt;);
        }
        ConfigureDriver(settings);
    }&lt;/pre&gt;
&lt;p&gt;This is necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;span style="white-space:pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;protected override string &lt;/span&gt;ConnectionString
{
    &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;return &lt;/span&gt;FixConnectionString(_connectionString); }
}
&lt;/pre&gt;
&lt;p&gt;In this case &lt;i&gt;FixConnectionString&lt;/i&gt;&amp;nbsp;read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;Finally configure NH to use the
ConnectionProvider:&lt;/p&gt;
&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
                &lt;/span&gt;MyAssembly.DynamicConnectionProvider, MyAssembly
            &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Some useful articles&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;&lt;a href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html" style="text-decoration:none;"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/revision/5.aspx</link><pubDate>Wed, 30 Mar 2011 11:34:18 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:514</guid><dc:creator>markweee</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Revision 5 posted to How to by markweee on 30/03/2011 08:34:18 a.m.&lt;br /&gt;
&lt;h2&gt;Dynamically change user info in connection string&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Mapping, QuickStart&lt;/div&gt;

&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]). &lt;a href="http://www.reviewonlineuniversity.com/universities/hill-university.asp" rel="follow"&gt;&lt;span style="background: SpringGreen;"&gt;Hill&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;University&lt;/span&gt;&lt;/a&gt; &lt;span style="background: SpringGreen;"&gt;AND&lt;/span&gt; &lt;a href="http://reviewonlineuniversity.com/universities/woodfield-university.asp" rel="follow"&gt;&lt;span style="background: SpringGreen;"&gt;Woodfield&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;University&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the&amp;nbsp; &lt;a href="http://www.reviewonlineuniversity.com/universities/corllins-university.asp" rel="follow"&gt;&lt;span style="background: SpringGreen;"&gt;Corllins&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;University&lt;/span&gt;&lt;/a&gt;standard&amp;nbsp;DriverConnectionProvider
class: &lt;a href="http://www.reviewonlineuniversity.com/universities/ashwood-university.asp" rel="follow"&gt;&lt;span style="background: SpringGreen;"&gt;Ashwood&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;University&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Accreditation&lt;/span&gt;&lt;/a&gt; &lt;span style="background: SpringGreen;"&gt;AND&lt;/span&gt; &lt;a href="http://www.reviewonlineuniversity.com/universities/rochieville-university.asp" rel="follow"&gt;&lt;span style="background: SpringGreen;"&gt;Rochville&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;University&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Accreditation&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DynamicConnectionProvider &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DriverConnectionProvider
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private string &lt;/span&gt;_connectionString;
    &lt;span style="color:blue;"&gt;public override void &lt;/span&gt;Configure(&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; settings)
    {

        &lt;span style="color:green;"&gt;// Connection string in the configuration overrides named connection string
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(!settings.TryGetValue(NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString,&lt;span style="color:blue;"&gt;out &lt;/span&gt;_connectionString))
    _connectionString = GetNamedConnectionString(settings);

        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_connectionString == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;HibernateException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not find connection string setting (set &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString + &lt;span style="color:#a31515;"&gt;&amp;quot; or &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionStringName + &lt;span style="color:#a31515;"&gt;&amp;quot; property)&amp;quot;&lt;/span&gt;);
        }
        ConfigureDriver(settings);
    }&lt;/pre&gt;
&lt;p&gt;This is necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;span style="white-space:pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;protected override string &lt;/span&gt;ConnectionString
{
    &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;return &lt;/span&gt;FixConnectionString(_connectionString); }
}
&lt;/pre&gt;
&lt;p&gt;In this case &lt;i&gt;FixConnectionString&lt;/i&gt;&amp;nbsp;read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;Finally configure NH to use the
ConnectionProvider:&lt;/p&gt;
&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
                &lt;/span&gt;MyAssembly.DynamicConnectionProvider, MyAssembly
            &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Some useful articles&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;&lt;a style="text-decoration:none;" href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/revision/4.aspx</link><pubDate>Sat, 29 Nov 2008 05:16:58 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:378</guid><dc:creator>Fabio Maulo</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Revision 4 posted to How to by Fabio Maulo on 29/11/2008 02:16:58 a.m.&lt;br /&gt;
&lt;h2&gt;Dynamically change user info in connection string&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: &lt;span style="background: SpringGreen;"&gt;Mapping&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;QuickStart&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]).&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the standard&amp;nbsp;DriverConnectionProvider
class:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DynamicConnectionProvider &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DriverConnectionProvider
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private string &lt;/span&gt;_connectionString;
    &lt;span style="color:blue;"&gt;public override void &lt;/span&gt;Configure(&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; settings)
    {

        &lt;span style="color:green;"&gt;// Connection string in the configuration overrides named connection string
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(!settings.TryGetValue(NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString,&lt;span style="color:blue;"&gt;out &lt;/span&gt;_connectionString))
    _connectionString = GetNamedConnectionString(settings);

        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_connectionString == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;HibernateException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not find connection string setting (set &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionString + &lt;span style="color:#a31515;"&gt;&amp;quot; or &amp;quot; 
                &lt;/span&gt;+ NHibernate.Cfg.&lt;span style="color:#2b91af;"&gt;Environment&lt;/span&gt;.ConnectionStringName + &lt;span style="color:#a31515;"&gt;&amp;quot; property)&amp;quot;&lt;/span&gt;);
        }
        ConfigureDriver(settings);
    }&lt;/pre&gt;
&lt;p&gt;This is necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;span style="white-space:pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;protected override string &lt;/span&gt;ConnectionString
{
    &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;return &lt;/span&gt;FixConnectionString(_connectionString); }
}
&lt;/pre&gt;
&lt;p&gt;In this case &lt;em&gt;FixConnectionString&lt;/em&gt;&amp;nbsp;read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;Finally configure NH to use the
ConnectionProvider:&lt;/p&gt;
&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
                &lt;/span&gt;MyAssembly.DynamicConnectionProvider, MyAssembly
            &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;property&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Some useful articles&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;&lt;a style="text-decoration:none;" href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;span style="text-decoration: line-through; color: red;"&gt;[&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;[howtonh:howtonh:/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx|here]]&lt;/span&gt;&amp;nbsp;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;&lt;span style="background: SpringGreen;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/revision/3.aspx</link><pubDate>Sat, 29 Nov 2008 05:14:55 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:203</guid><dc:creator>Fabio Maulo</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Revision 3 posted to How to by Fabio Maulo on 29/11/2008 02:14:55 a.m.&lt;br /&gt;
&lt;h2&gt;Dynamically change user info in connection string&lt;/h2&gt;
&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]).&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the standard&amp;nbsp;DriverConnectionProvider
class:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DynamicConnectionProvider &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DriverConnectionProvider
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private string &lt;/span&gt;_connectionString;
    &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Override&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;the&lt;/span&gt; &lt;strong&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Configure&lt;/span&gt;&lt;/strong&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;method&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;:&lt;/span&gt;&lt;span style="color:blue;"&gt;public override void &lt;span style="text-decoration: line-through; color: red;"&gt;Configure(IDictionary&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;string,&lt;/span&gt; &lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;Configure&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;(&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="background: SpringGreen;"&gt;IDictionary&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; settings)
    {

        &lt;span style="color:green;"&gt;// Connection string in the configuration overrides named connection string
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;span style="text-decoration: line-through; color: red;"&gt;!settings.TryGetValue(NHibernate.Cfg.Environment.ConnectionString,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;!settings.TryGetValue(NHibernate.Cfg.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="background: SpringGreen;"&gt;Environment&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;ConnectionString,&lt;/span&gt;&lt;span style="color:blue;"&gt;out &lt;/span&gt;_connectionString))
    _connectionString = GetNamedConnectionString(settings);

        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(_connectionString == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;HibernateException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not find connection string setting (set &amp;quot; 
                &lt;/span&gt;+ &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="text-decoration: line-through; color: red;"&gt;NHibernate.Cfg.Environment.ConnectionString&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;NHibernate.Cfg&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="background: SpringGreen;"&gt;Environment&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;ConnectionString&lt;/span&gt; + &lt;span style="color:#a31515;"&gt;&amp;quot; or &amp;quot; 
                &lt;/span&gt;+ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="text-decoration: line-through; color: red;"&gt;NHibernate.Cfg.Environment.ConnectionStringName&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;NHibernate.Cfg&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;&lt;span style="background: SpringGreen;"&gt;Environment&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;ConnectionStringName&lt;/span&gt; + &lt;span style="color:#a31515;"&gt;&amp;quot; property)&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;);&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;)&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;;&lt;/span&gt;
        }
        ConfigureDriver(settings);
    }&lt;/pre&gt;
&lt;p&gt;This is necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;span style="white-space:pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;protected override string &lt;/span&gt;ConnectionString
{
    &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;return &lt;/span&gt;FixConnectionString(_connectionString); }
}
&lt;/pre&gt;
&lt;p&gt;In this case &lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;FixConnectionString&amp;quot;&lt;/span&gt; &lt;em&gt;&lt;span style="background: SpringGreen;"&gt;FixConnectionString&lt;/span&gt;&lt;/em&gt;&amp;nbsp;read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;Finally configure &lt;span style="text-decoration: line-through; color: red;"&gt;Nh&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;NH&lt;/span&gt; to use the
ConnectionProvider:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;name=&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;connection.provider&amp;quot;&amp;gt;MyAssembly.DynamicConnectionProvider,&lt;/span&gt; &lt;/p&gt;
&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="background: SpringGreen;"&gt;property&lt;/span&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;span style="background: SpringGreen;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;connection.provider&lt;/span&gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;&amp;gt;&lt;/span&gt;
                &lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;MyAssembly.DynamicConnectionProvider&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; MyAssembly
            &lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="background: SpringGreen;"&gt;property&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="background: SpringGreen;"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Some useful articles&lt;span style="text-decoration: line-through; color: red;"&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html&lt;/span&gt;&amp;nbsp;&lt;span style="text-decoration:underline;"&gt;&lt;a href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;&lt;span style="background: SpringGreen;"&gt;here&lt;/span&gt;&lt;/a&gt;&amp;nbsp;and&lt;/p&gt;
&lt;p&gt;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;http://nhforge.org/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx&lt;/span&gt;&amp;nbsp;&lt;span style="background: SpringGreen;"&gt;[&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;[howtonh:howtonh:/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx|here]]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/revision/2.aspx</link><pubDate>Sat, 29 Nov 2008 00:41:57 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:202</guid><dc:creator>oorduz</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Revision 2 posted to How to by oorduz on 28/11/2008 09:41:57 p.m.&lt;br /&gt;
&lt;h2&gt;Dynamically change user info in connection string&lt;/h2&gt;
&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]).&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the standard&amp;nbsp;DriverConnectionProvider
class:&lt;/p&gt;
&lt;p&gt;public class
DynamicConnectionProvider : DriverConnectionProvider&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string
_connectionString;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Override the &lt;strong&gt;Configure&lt;/strong&gt; method:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void Configure(IDictionary&amp;lt;string, string&amp;gt;
settings)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Connection string in the configuration overrides named
connection string&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!settings.TryGetValue(NHibernate.Cfg.Environment.ConnectionString, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
out _connectionString))&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_connectionString =
GetNamedConnectionString(settings);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_connectionString == null)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new HibernateException(&amp;quot;Could not find
connection string setting (set &amp;quot; +&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NHibernate.Cfg.Environment.ConnectionString &amp;nbsp;+&amp;nbsp;&amp;quot; or &amp;quot; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NHibernate.Cfg.Environment.ConnectionStringName +&amp;nbsp;&amp;quot; property)&amp;quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ConfigureDriver(settings);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This &lt;span style="background: SpringGreen;"&gt;is&lt;/span&gt; necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;protected override string ConnectionString&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FixConnectionString(_connectionString);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this case &amp;quot;FixConnectionString&amp;quot; read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Finally configure Nh to use the
ConnectionProvider:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;property name=&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;connection.provider&amp;quot;&amp;gt;MyAssembly.PsDynamicConnectionProvider,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;&amp;quot;connection.provider&amp;quot;&amp;gt;MyAssembly.DynamicConnectionProvider,&lt;/span&gt; MyAssembly &amp;lt;/property&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some useful articles:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;p&gt;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;http://nhforge.org/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Dynamically change user info in connection string</title><link>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/revision/1.aspx</link><pubDate>Sat, 29 Nov 2008 00:29:02 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:201</guid><dc:creator>oorduz</dc:creator><comments>http://nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string/comments.aspx</comments><description>Revision 1 posted to How to by oorduz on 28/11/2008 09:29:02 p.m.&lt;br /&gt;
&lt;p&gt;In some cases our clients has to use the same database
user id in each connection, so they can use audit and security features of
their database system (and their DBAs will be happy [:)]).&lt;/p&gt;
&lt;p&gt;To do that in Nh We can use the ConnectionProvider
facility. Just derive a class from the standard&amp;nbsp;DriverConnectionProvider
class:&lt;/p&gt;
&lt;p&gt;public class
DynamicConnectionProvider : DriverConnectionProvider&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string
_connectionString;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Override the &lt;strong&gt;Configure&lt;/strong&gt; method:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void Configure(IDictionary&amp;lt;string, string&amp;gt;
settings)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Connection string in the configuration overrides named
connection string&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!settings.TryGetValue(NHibernate.Cfg.Environment.ConnectionString, &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
out _connectionString))&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_connectionString =
GetNamedConnectionString(settings);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_connectionString == null)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new HibernateException(&amp;quot;Could not find
connection string setting (set &amp;quot; +&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NHibernate.Cfg.Environment.ConnectionString &amp;nbsp;+&amp;nbsp;&amp;quot; or &amp;quot; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NHibernate.Cfg.Environment.ConnectionStringName +&amp;nbsp;&amp;quot; property)&amp;quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ConfigureDriver(settings);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This necessary because the original connection
string is private, but just copy the code from base method.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The real magic is in &amp;quot;ConnectionString&amp;quot;
property, it is called when nh has to connect in a Session. You have to
override it so you can make the changes you need.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;protected override string ConnectionString&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FixConnectionString(_connectionString);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this case &amp;quot;FixConnectionString&amp;quot; read
the user info from some environment variable and inject it in the connection
string.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Finally configure Nh to use the
ConnectionProvider:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;property name=&amp;quot;connection.provider&amp;quot;&amp;gt;MyAssembly.PsDynamicConnectionProvider, MyAssembly &amp;lt;/property&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some useful articles:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html"&gt;http://japikse.blogspot.com/2008/06/custom-connection-provider-with.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;p&gt;&lt;a href="/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx"&gt;http://nhforge.org/blogs/nhibernate/archive/2008/09/18/extending-nhibernate-s-driverconnectionprovider.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>
