ServiceStack OrmLite - 执行前后

时间:2016-02-19 05:30:53

标签: postgresql servicestack ormlite-servicestack

我们正在使用真棒&快速的OrmLite(ServiceStack)库作为我们的microORM连接到我们的PostgreSQL数据库。

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

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

最后:

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

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

1 个答案:

答案 0 :(得分:2)

您可以尝试使用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();