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%'