Si pudieras aceptar el CAST
en lugar de CONVERT
(Y estoy casi seguro de que puedes) , entonces hay una solución más sencilla.
En lugar de llamar a "relacionado con SQL Server" función, llamemos a la abstracción, que debería funcionar en la mayoría de los servidores de bases de datos (según los dilactos de NHibernate admitidos)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Entonces la Restriction
usado en un WHERE
cláusula podría tener este aspecto:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Y el resultado generado por NHibernate, usando el dialecto de SQL Server sería:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'