Como escapar de uma cláusula LIKE usando o NHibernate Criteria?

O código que estamos usando é direto nesta parte da consulta de pesquisa:

myCriteria.Add(
    Expression.InsensitiveLike("Code", itemCode, MatchMode.Anywhere));

e isso funciona bem em um ambiente de produção.

O problema é que um de nossos clientes possui códigos de item que contêm% símbolos aos quais essa consulta precisa corresponder. A saída SQL resultante desse código é semelhante a:

SELECT ... FROM ItemCodes WHERE ... AND Code LIKE '%ItemWith%Symbol%'

o que explica claramente por que eles estão obtendo resultados ímpares nas pesquisas de itens.

Existe uma maneira de ativar o escape usando o programáticoCriteria métodos?

Termo aditivo:

Estamos usando uma versão um pouco antiga do NHibernate, 2.1.0.4000 (atual é 2.1.2.4853), mas verifiquei as notas de versão e não houve menção de uma correção para isso. Também não encontrei nenhum problema em aberto no bugtracker deles.

Estamos usando o SQL Server, para que eu possa escapar facilmente dos caracteres especiais (%, _, [e ^) no código, mas o objetivo de usar o NHibernate era tornar o nosso aplicativo independente do mecanismo de banco de dados o máximo possível .

NemRestrictions.InsensitiveLike() nemHqlQueryUtil.GetLikeExpr() escapar de suas entradas e remover oMatchMode O parâmetro não faz diferença no que diz respeito à fuga.

Atualizar: eu encontreialguém querendo fazer a mesma coisa (três anos atrás), e a resolução era adicionar oescapeChar sobrecargas nos métodos mencionados acima (isso foi "corrigido" na versão 2.0.0.3347). Adicionei um comentário a esse problema solicitando uma resolução maior.

questionAnswers(2)

yourAnswerToTheQuestion