ServiceStack:禁用类型化表达式中的转义通配符

时间:2015-11-04 00:19:47

标签: servicestack ormlite-servicestack

我正在尝试生成SQL LIKE查询,例如:

SELECT COUNT(1) FROM Users WHERE SearchField LIKE '%email:%domain.com%'

在OrmLite中,Contains语句转义生成此SQL的%字符:

SELECT COUNT(1) FROM Users WHERE upper("Users"."SearchField") like '%EMAIL:^%DOMAIN.COM%' escape '^'

是否可以禁用转义(在4.0.19中添加)或者是否有更好的方法来生成SQL语句?

谢谢,

1 个答案:

答案 0 :(得分:1)

OrmLite的Typed API转义通配符字符串,因此它们被视为安全预防措施,以防止用户输入返回敏感数据。

最简单的方法是使用自定义SQL片段,例如:

q.Where("SearchField LIKE {0}", "%email:%domain.com%");

否则可以覆盖自定义DialectProvider中的EscapeWildcards()(即继承您的首选提供者)以返回值而不转义通配符,但这是一个高级自定义我只考虑你是否适合维护自定义DialectProvider。