Pokud byste mohli přijmout CAST
místo CONVERT
(A jsem si téměř jistý, že můžete) , pak je tu jednodušší řešení.
Místo volání „Související se serverem SQL“ funkci, nazvěme abstrakci, která by měla fungovat na většině DB serverů (na základě podporovaných NHibernate dilacts)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Tedy Restriction
používá se v WHERE
klauzule by mohla vypadat takto:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
A výsledek generovaný NHibernate pomocí SQL Server dialektu by byl:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'