तो संख्या एक स्ट्रिंग थे, तो यह आसान होगा:
.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))
जब से तुम एक संख्या है, NHibernate संख्या के प्रकार की जाँच करेगा और यदि आप इसे एक स्ट्रिंग दे यह एक फेंक होगा अपवाद।
नहीं
यकीन है कि क्यों एनएच टीम पैरामीटर के रूप में वस्तु और एक MatchMode मानकों के साथ एक अधिभार नहीं प्रदान की थी ....
किसी भी तरह, तुम अब भी इस तरह यह कर सकते हैं:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))
संपादित करें
उर्फ बारे में:
(मैं नहीं मिल सकता है, जहां इस बारे में दस्तावेज़ वार्ता लेकिन यहाँ मीटर है वाई इसकी समझ)
{उर्फ} हाल ही में CreateCriteria के लिए एनएच द्वारा उपयोग किए गए उपनाम लौटाता है। तो अगर आप था:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();
{उर्फ} इस मामले में 'दस्तावेज़' होगा - तो आप के साथ खत्म हो जाएगा: doc.Number।
तो, CreateCriteria के बाद हमेशा {alias} का उपयोग करें जिसका उपनाम आपको उपयोग करने की आवश्यकता है।
उत्कृष्ट, धन्यवाद। एसक्यूएल अभिव्यक्ति पर उपनाम के लिए ... मैंने "this_.Number" का उपयोग किया है, ठीक है, क्या मैं गारंटी देता हूं कि NHibernate हमेशा इस_ का उपयोग करेगा। –
क्योंकि मैंने "वाई" के साथ अपने मानदंडों को उपनाम दिया - सत्र। क्रेटक्रिटारिया ("वाई") - लेकिन मैं एसक्यूएल अभिव्यक्ति में "wi.Number" का उपयोग नहीं कर सकता क्योंकि यह इसे टी-एसक्यूएल में शाब्दिक रूप से रखता है (यदि वह समझ में आता है)। –
और नियमित मानदंड निर्माण कॉल के भीतर "wi" अर्थ वास्तव में सर्वर पर भेजे गए टी-एसक्यूएल में "this_" में परिवर्तित हो जाता है, मैं आगे बढ़ता हूं और उपनाम को एसक्यूएल अभिव्यक्ति में "this_.Number" –