Linq क्वेरी करने का प्रयास करते समय मुझे निम्न त्रुटि मिल रही है:
LINQ to Entities विधि 'बूलियन IsCharityMatching (System.String, System.String)' विधि को नहीं पहचानता है, और इस पद्धति का स्टोर अभिव्यक्ति में अनुवाद नहीं किया जा सकता है।
मैंने पिछले प्रश्नों के बहुत सारे पढ़े हैं जहाँ लोगों को एक ही त्रुटि मिलती है, और अगर मैं इसे सही ढंग से समझता हूँ तो यह है क्योंकि LINQ to Entities को पूरे linq क्वेरी एक्सप्रेशन को सर्वर क्वेरी में अनुवादित करने की आवश्यकता होती है, और इसलिए आप एक बाहरी विधि को कॉल नहीं कर सकते हैं इस में। मैं अपने परिदृश्य को अभी तक काम करने वाली चीज़ में परिवर्तित नहीं कर पाया हूं, और मेरा दिमाग पिघलना शुरू हो गया है, इसलिए मुझे उम्मीद थी कि कोई मुझे सही दिशा में ले जा सकता है। हम एंटिटी फ्रेमवर्क और विनिर्देशन पैटर्न का उपयोग कर रहे हैं (और मैं दोनों के लिए नया हूं)।
यहां वह कोड है जो विनिर्देश का उपयोग करता है:
ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);
charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
यहाँ linq अभिव्यक्ति है:
public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
यहाँ IsCharityMatching विधि है:
public bool IsCharityMatching(string name, string referenceNumber)
{
bool exists = true;
if (!String.IsNullOrEmpty(name))
{
if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
!this.alias.ToLower().Contains(name.ToLower()) &&
!this.charityId.ToLower().Contains(name.ToLower()))
{
exists = false;
}
}
if (!String.IsNullOrEmpty(referenceNumber))
{
if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
{
exists = false;
}
}
return exists;
}
यदि आपको और भी किसी जानकारी की ज़रूरत है तो मुझे बताएं।
बहुत धन्यवाद,
Annelie
Find()
जब आप IsSatisfied()
इसके अंदर कैसे उपयोग करते हैं ।