Gdybyś mógł zaakceptować CAST
zamiast CONVERT
(I jestem prawie pewien, że możesz) , wtedy jest prostsze rozwiązanie.
Zamiast wywoływać „związany z SQL Server” funkcja, nazwijmy abstrakcję, która powinna działać na większości serwerów DB (na podstawie obsługiwanych dialektów NHibernate)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Więc Restriction
używane w WHERE
klauzula może wyglądać tak:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Wynik wygenerowany przez NHibernate przy użyciu dialektu SQL Server to:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'