NHibernate和SetSessionAuth审核列

NHibernate和SetSessionAuth审核列,nhibernate,fluent-nhibernate,auditing,Nhibernate,Fluent Nhibernate,Auditing,我们有由触发器设置的审计列。 出于我任职之前的模糊安全原因和我无法控制的原因,我们使用普通用户登录,并执行“设置会话授权”,将用户更改为登录用户的db用户 当我们转换到NHibernate时,它会创建一个全新的会话,并将所有内容都升级 当我们尝试进行设置会话身份验证时,我们关闭了设置会话身份验证 现在,我们正试图找到一种方法,让NHibernate允许我们在不回收会话的情况下进行“设置会话授权”,这样我们就可以将现有的基于触发器的审核专栏内容用于传统应用程序和新的NHibernate应用程序 这

我们有由触发器设置的审计列。 出于我任职之前的模糊安全原因和我无法控制的原因,我们使用普通用户登录,并执行“设置会话授权”,将用户更改为登录用户的db用户

当我们转换到NHibernate时,它会创建一个全新的会话,并将所有内容都升级 当我们尝试进行设置会话身份验证时,我们关闭了设置会话身份验证

现在,我们正试图找到一种方法,让NHibernate允许我们在不回收会话的情况下进行“设置会话授权”,这样我们就可以将现有的基于触发器的审核专栏内容用于传统应用程序和新的NHibernate应用程序

这不是一个理想的解决方案,甚至不是最好的解决方案,但这有可能吗

我希望有一个备用接口允许这种访问

有人知道怎么做吗,或者你能给我指点方向和好的提示吗

谢谢


Eric-

您可以继承
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是提供正确用户的方法)

有效!我们很接近,我们有完全相同的代码,但得到的是司机的命令,而不是连接。但是你的方式奏效了,我们的方式没有。谢谢!E-