Hvis du kunne acceptere CAST
i stedet for CONVERT
(Og det er jeg næsten sikker på, at du kan) , så er der en mere ligetil løsning.
I stedet for at kalde "SQL-serverrelateret" funktion, lad os kalde abstraktionen, som burde virke på de fleste DB-servere (baseret på understøttede NHibernate-dilacter)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Så Restriction
bruges i en WHERE
klausul kunne se sådan ud:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Og resultatet genereret af NHibernate ved brug af SQL Server-dialekten ville være:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'