Nếu bạn có thể chấp nhận CAST
thay vì CONVERT
(Và tôi gần như chắc chắn rằng bạn có thể làm được) , thì có một giải pháp đơn giản hơn.
Thay vì gọi "SQL Server liên quan" , hãy gọi hàm trừu tượng, sẽ hoạt động trên hầu hết các Máy chủ DB (dựa trên các pha loãng NHibernate được hỗ trợ)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
Vì vậy, Restriction
được sử dụng trong WHERE
mệnh đề có thể trông như thế này:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
Và kết quả được tạo bởi NHibernate, sử dụng phương ngữ SQL Server sẽ là:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'