ServiceStack OrmLite-执行前和执行后

ServiceStack OrmLite-执行前和执行后,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我们正在使用awesome&fast OrmLite(ServiceStack)库作为我们的microORM来连接到我们的PostgreSQL数据库 我们在PostgreSQL数据库中启用了加密。为了确保在查询之前对相关数据进行解密,我们需要执行以下操作: Db.ExecuteSql(string.Format("SELECT pgtde_begin_session('{0}');", tdeKey)); 最后: Db.ExecuteSql("SELECT pgtde_end_session(

我们正在使用awesome&fast OrmLite(ServiceStack)库作为我们的microORM来连接到我们的PostgreSQL数据库

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

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

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

您可以尝试使用,例如:

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();
public类PgSqlSecureSessionFilter:OrmLiteExecFilter
{
公共覆盖T Exec(IDbConnection db,Func筛选器)
{
尝试
{
Execute(“SELECT pgtde_begin_session(@tdeKey)”,new{tdeKey});
返回base.Exec(db,filter);
}
最后{
db.Execute(“选择pgtde_end_session();”;
}
}
}
OrmLiteConfig.ExecFilter=new PgSqlSecureSessionFilter();

谢谢。出于兴趣,您建议在何处添加上述代码。在主项目或serviceinterface中?@MarkH它只是一个静态属性,应该在启动时初始化,即与
或mliteConnectionFactory
一起初始化。我们注意到db.ExecuteSql导致再次调用exec过滤器(递归)。@MarkH是的,对于OrmLite API可以这样做,您可以尝试执行()它应该在ServiceStack.OrmLite.Dapper命名空间中使用Dapper的嵌入式版本,否则您将需要回退到使用原始ADO.NETs IDbCommand.ExecuteOnQuery()