• nhibernate change connection


    http://stackoverflow.com/questions/4335827/changing-nhibernate-connectionstring

    http://stackoverflow.com/questions/491139/how-do-you-change-nhibernates-connection-string-per-http-request

    http://jasondentler.com/blog/2009/11/authentication-impersonation-and-dynamic-nhibernate-connection-strings

    http://www.nhforge.org/wikis/howtonh/dynamically-change-user-info-in-connection-string.aspx

    Dynamically change user info in connection string

    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 [:)]).

    To do that in Nh We can use the ConnectionProvider facility. Just derive a class from the standard DriverConnectionProvider class:

     

    public class DynamicConnectionProvider : DriverConnectionProvider
    {
     private string _connectionString;
     public override void Configure(IDictionary<string, string> settings)
     {
     
      // Connection string in the configuration overrides named connection string
      if (!settings.TryGetValue(NHibernate.Cfg.Environment.ConnectionString,out _connectionString))
     _connectionString = GetNamedConnectionString(settings);
     
      if (_connectionString == null)
      {
       throw new HibernateException("Could not find connection string setting (set " 
        + NHibernate.Cfg.Environment.ConnectionString + " or " 
        + NHibernate.Cfg.Environment.ConnectionStringName + " property)");
      }
      ConfigureDriver(settings);
     }

    This is necessary because the original connection string is private, but just copy the code from base method.

    The real magic is in "ConnectionString" 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.

     

    protected override string ConnectionString
    {
     get { return FixConnectionString(_connectionString); }
    }
     

    In this case FixConnectionString read the user info from some environment variable and inject it in the connection string.

    Finally configure NH to use the ConnectionProvider:

     

       <property name="connection.provider">
        MyAssembly.DynamicConnectionProvider, MyAssembly
       </property>
  • 相关阅读:
    剖析 GSM 加密机制以及位置更新的过程
    利用ASK/OOK 发射模块,实现信号重放
    使用RTL-SDR打开车门
    复现 360 Unicorn Team 黑科技之 HackNFC
    如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
    如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证
    黑客炼金术士 Seeker:可以攻破 4G 摸到你短信,还要为朝阳群众提供谍战工具
    如何使用HackRF做一个简单的IMSI捕获器
    招中高级web开发工程师
    ionic 动画和返回按钮
  • 原文地址:https://www.cnblogs.com/CodingArt/p/5986052.html
Copyright © 2020-2023  润新知