Wenn Sie den CAST
akzeptieren könnten statt CONVERT
(Und ich bin mir fast sicher, dass Sie das können) , dann gibt es eine einfachere Lösung.
Statt "SQL Server related" aufzurufen nennen wir die Abstraktion, die auf den meisten DB-Servern funktionieren sollte (basierend auf unterstützten NHibernate-Dilacts)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Also die Restriction
in einem WHERE
verwendet Klausel könnte so aussehen:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Und das von NHibernate generierte Ergebnis wäre unter Verwendung des SQL Server-Dialekts:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'