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

ServiceStack: Disable escaping wildcards in typed expressions

我正在尝试生成 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 语句?

谢谢,

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

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

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

否则,可以在自定义 DialectProvider(即继承您的首选提供程序)中将 EscapeWildcards() 覆盖为 return 值而不转义通配符,但这是我只考虑的高级自定义如果您愿意维护自定义 DialectProvider。