ServiceStack OrmLite - 预执行和 post 执行

ServiceStack OrmLite - pre and post execution

我们正在使用出色且快速的 OrmLite (ServiceStack) 库作为我们的 microORM 来连接到我们的 PostgreSQL 数据库。

我们在 PostgreSQL 数据库中启用了 TDE 加密。为确保相关数据在我们查询之前已经解密,我们需要执行以下操作:

Db.ExecuteSql(string.Format("SELECT pgtde_begin_session('{0}');", tdeKey));

最后:

Db.ExecuteSql("SELECT pgtde_end_session();");

我们是否可以确保这些 sql 语句在每次调用之前和之后执行,而不是将它们插入到我们的每个 RequestDto 方法中。

您可以尝试使用 OrmLite Exec Filter,像这样:

public class PgSqlSecureSessionFilter : OrmLiteExecFilter
{
    public override T Exec<T>(IDbConnection db, Func<IDbCommand, T> filter)
    {
        try
        {
            db.Execute("SELECT pgtde_begin_session(@tdeKey)", new { tdeKey });
            return base.Exec(db, filter);
        }
        finally {
            db.Execute("SELECT pgtde_end_session();");
        }
    }
}

OrmLiteConfig.ExecFilter = new PgSqlSecureSessionFilter();