Se você pudesse aceitar o
CAST em vez de CONVERT (E tenho quase certeza de que você pode) , então existe uma solução mais direta. Em vez de chamar "SQL Server related" função, vamos chamar a abstração, que deve estar funcionando na maioria dos servidores de banco de dados (baseado em dilacts NHibernate suportados)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Portanto, a
Restriction usado em um WHERE cláusula poderia ficar assim:Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
E o resultado gerado pelo NHibernate, usando o dialeto do SQL Server seria:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'