अगर आप CAST
स्वीकार कर सकते हैं CONVERT
. के बजाय (और मुझे पूरा यकीन है कि आप कर सकते हैं) , तो और अधिक सीधा समाधान है।
कॉल करने के बजाय "SQL सर्वर से संबंधित" फ़ंक्शन, आइए अबास्ट्रक्शन को कॉल करें, जो कि अधिकांश डीबी सर्वरों पर काम करना चाहिए (समर्थित NHibernate dilacts के आधार पर)
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
तो Restriction
WHERE
. में उपयोग किया जाता है खंड इस तरह दिख सकता है:
Restrictions
.Like (
Projections.Cast(NHibernateUtil.String, Projections.Property(searchCol))
, "2009"
, MatchMode.Anywhere
)
और SQL सर्वर बोली का उपयोग करते हुए NHibernate द्वारा उत्पन्न परिणाम होगा:
WHERE cast( this_.theColumn as NVARCHAR(255)) like @p1 ... @p1=N'%2009%'