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%'