Jika Anda dapat menerima CAST alih-alih CONVERT (Dan saya hampir yakin Anda bisa) , maka ada solusi yang lebih mudah.
Alih-alih memanggil "Terkait SQL Server" fungsi, sebut saja abstraksi, yang seharusnya bekerja pada sebagian besar Server DB (berdasarkan dilak NHibernate yang didukung)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Jadi Restriction digunakan dalam WHERE klausa bisa terlihat seperti ini:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Dan hasil yang dihasilkan oleh NHibernate, menggunakan dialek SQL Server adalah:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'