Ако можете да приемете CAST
вместо CONVERT
(Почти съм сигурен, че можете) , тогава има по-просто решение.
Вместо да се обадите на „Свързани със SQL Server“ функция, нека извикаме абстракцията, която трябва да работи на повечето DB сървъри (на базата на поддържани NHibernate dilacts)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Така че Restriction
използвани в WHERE
клаузата може да изглежда така:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
И резултатът, генериран от NHibernate, използвайки диалекта на SQL Server, ще бъде:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'