我们有触发器设置的审核列。 出于模糊的安全原因,在我的任期之前和我的控制之前,我们使用通用用户登录,并执行“设置会话授权”以将用户更改为登录用户的db用户。
当我们转换为NHibernate时,它会创建一个全新的会话并将所有内容都填满 当我们尝试设置会话身份验证时,我们将set session auth关闭...
现在我们正试图找到一种方法让NHibernate让我们“设置会话授权”而无需回收我们的会话,因此我们可以使用我们现有的基于触发器的审计列,包括旧版应用程序和新版本NHibernate应用程序。
这不是理想的解决方案,也不是最好的解决方法,但它有可能吗?
我希望有一个允许这种访问的备用接口。
有没有人知道该怎么做,或者你能指出我的方向和良好的提示吗?
谢谢,
埃里克 -
答案 0 :(得分:1)
您可以继承DriverConnectionProvider
并在创建连接时执行任何操作。
示例:
public class MyConnectionProvider : DriverConnectionProvider
{
public override IDbConnection GetConnection()
{
var connection = base.GetConnection();
var sessionAuthCommand = connection.CreateCommand();
sessionAuthCommand.CommandText = "set session authorization " + GetUser();
sessionAuthCommand.ExecuteNonQuery();
return connection;
}
}
然后配置NHiberate以将其用作连接提供程序。
(GetUser是您提供正确用户的方法)