0

トリガーによって設定された監査列があります。私の在職期間よりも前のセキュリティ上の理由から、一般的なユーザーでログインし、「セッション認証の設定」を実行して、ユーザーをログインしているユーザーのデータベースユーザーに変更します。

NHibernateに変換すると、まったく新しいセッションが作成され、set session authを実行しようとするとすべてがジャックアップされるため、setsessionauthをオフにしました...

現在、NHibernateにセッションをリサイクルせずに「セッション認証の設定」を実行させる方法を見つけようとしています。これにより、既存のトリガーベースの監査列をレガシーアプリと新しいNHibernateアプリの両方で使用できます。

それは理想的な解決策ではなく、それを行うための最良の方法でもありませんが、それは可能ですか?

この種のアクセスを可能にする代替インターフェースがあることを望んでいました。

誰かがそれを行う方法を知っていますか、またはあなたは私に向けて良いヒントを教えてもらえますか?

ありがとう、

エリック-

4

1 に答える 1

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は、正しいユーザーを提供するメソッドです)

于 2010-04-14T03:17:46.760 に答える