Nhibernate 3.0 cookbook学习笔记 动态设置连接字符串

我们都知道数据库有两种验证模式:Windows身份验证模式与SQL SERVER验证模式。

在Nhibernate中可以动态的去配置它。

在App.config中,这样添加两个连接字符串

<add name="db" connectionString=
"Server=.\SQLExpress; Database=NHCookbook;
User Id=AnonymousUser; Password=p455w0rd"/>
<add name="auth_db" connectionString=
"Server=.\SQLExpress; Database=NHCookbook;
Trusted_Connection=SSPI"/>

对应Nhibernate程序的配制:

复制代码
    <hibernate-configuration
  xmlns="urn:nhibernate-configuration-2.2">
        <session-factory>
            <!--指定代理工厂类-->
            <property name="proxyfactory.factory_class">
                DynamicConnectionString.DynamicConnectionProvider,
                DynamicConnectionString
            </property>
            <!--数据库类型-->
            <property name="dialect">
                NHibernate.Dialect.MsSql2008Dialect,
                NHibernate
            </property>
            <!--数据库名-->
            <property name="connection.connection_string_name">
                db
            </property>
            <!--数据库并发数-->
            <property name="adonet.batch_size">
                100
            </property>
            <!--映射的类名-->
            <mapping assembly="Eg.Core"/>
        </session-factory>
    </hibernate-configuration>
复制代码

注意节点connection.provider的值。

然后再添加字符串提供类:

复制代码
public class DynamicConnectionProvider
    {
        private const string ANON_CONN_NAME = "db";
        private const string AUTH_CONN_NAME = "auth_db";
        protected override string ConnectionString
        {
            get
            {
                var connstrs = ConfigurationManager.ConnectionStrings;
                var connstr = connstrs[ANON_CONN_NAME];
                if (IsAuthenticated())
                    connstr = connstrs[AUTH_CONN_NAME];
                return connstr.ConnectionString;
            }
        }
        private bool IsAuthenticated()
        {
            var identity = WindowsIdentity.GetCurrent();
            return identity != null && identity.IsAuthenticated;
        }
    }
复制代码

 

转载于:https://www.cnblogs.com/showsky/archive/2013/01/18/2866243.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值