我们都知道数据库有两种验证模式:Windows身份验证模式与SQL SERVER验证模式。
在Nhibernate中可以动态的去配置它。
在App.config中,这样添加两个连接字符串
对应Nhibernate程序的配制:
DynamicConnectionString.DynamicConnectionProvider,
DynamicConnectionString
NHibernate.Dialect.MsSql2008Dialect,
NHibernate
db
100
注意节点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;
}
}