Om du kunde acceptera CAST
istället för CONVERT
(Och jag är nästan säker på att du kan) , då finns det en mer okomplicerad lösning.
Istället för att kalla "SQL-serverrelaterad" funktionen, låt oss kalla abstraktionen, som borde fungera på de flesta DB-servrar (baserat på stödda NHibernate-dilacter)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Alltså Restriction
används i en WHERE
klausul kan se ut så här:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Och resultatet som genereras av NHibernate med SQL Server-dialekten skulle vara:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'