¿Cómo escapo de una cláusula LIKE con los criterios de NHibernate?

El código que estamos usando es sencillo en esta parte de la consulta de búsqueda:

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

y esto funciona bien en un entorno de producción.

El problema es que uno de nuestros clientes tiene códigos de artículos que contienen% símbolos con los que esta consulta debe coincidir. El resultado SQL resultante de este código es similar a:

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

lo que explica claramente por qué obtienen resultados extraños en las búsquedas de artículos.

¿Hay alguna manera de permitir escapar usando la programáticaCriteria métodos?

Apéndice:

Estamos usando una versión un poco antigua de NHibernate, 2.1.0.4000 (la versión actual es 2.1.2.4853), pero verifiqué las notas de la versión y no se mencionó una solución para esto. Tampoco encontré ningún problema abierto en su bugtracker.

Estamos usando SQL Server, por lo que puedo escapar de los caracteres especiales (%, _, [y ^) en el código con mucha facilidad, pero el objetivo de nosotros usar NHibernate era hacer que nuestra aplicación sea lo más independiente posible del motor de base de datos .

NingunoRestrictions.InsensitiveLike() niHqlQueryUtil.GetLikeExpr() escapar de sus entradas y eliminar elMatchMode El parámetro no hace ninguna diferencia en lo que respecta al escape.

Actualizar: encontréalguien más queriendo hacer lo mismo (hace tres años), y la resolución fue agregar elescapeChar sobrecargas a los métodos que he mencionado anteriormente (esto fue "arreglado" en la versión 2.0.0.3347). Agregué un comentario a ese problema solicitando una resolución adicional.

Respuestas a la pregunta(2)

Su respuesta a la pregunta