将WHERE子句附加到NHibernate的SqlString

时间:2019-02-16 19:38:45

标签: c# nhibernate

在数据库上执行NHibernate的SqlString之前,我需要对其进行修改。具体来说,我需要将WHERE子句附加到SELECT / UPDATE / DELETE语句。 WHERE子句可能已经存在或可能不存在,这意味着我可能不得不修改它或添加其他部分。为此,我创建了一个拦截器:

const navigate = (routeName, params) => {
   // DISPATCH ERROR
   _navigator.dispatch(
     NavigationActions.navigate({
       routeName,
       params
     })
   );
};

并在NHibernate中注册它:

public class SimpleInterceptor: EmptyInterceptor, IInterceptor
{
    SqlString IInterceptor.OnPrepareStatement(SqlString sqlString)
    {
        if (!shouldQueryBeParsed(sqlString))
        {
            return sqlString;
        }
        //Add WHERE clause.
        return modifiedSqlString;
    }

    private bool shouldQueryBeParsed(SqlString sqlString)
    {
        return !sqlString.StartsWithCaseInsensitive("INSERT");
    }
}

我发现的唯一相关的线程是Modify SQL in NHibernate,但似乎不适用于我正在使用的NHibernate 5.2.3。

非常感谢您的帮助,因为这对我来说是一个障碍。

0 个答案:

没有答案