2012-01-02 12 views
6

मैं RavenDB के साथ LINQ क्वेरी के भीतर ToUpperInvariant() का उपयोग करने का प्रयास कर रहा हूं।रावेनडीबी लिंक अमान्य ऑपरेशन। ToUpperInvariant()

समझ में नहीं कर सकते हैं कैसे server.Name.ToUpperInvariant अनुवाद करने के लिए(): मैं एक InvalidOperationException हो रही है।

क्वेरी नीचे दी गई है। मुझे यहां नाम से मिलान करने में सक्षम होने के लिए क्या करने की आवश्यकता है? क्या यह RavenDB का उपयोग कर एक क्वेरी के भीतर संभव है?

public ApplicationServer GetByName(string serverName) 
{ 
    return QuerySingleResultAndCacheEtag(session => session.Query<ApplicationServer>() 
     .Where(server => server.Name.ToUpperInvariant() == serverName.ToUpperInvariant()).FirstOrDefault()) 
     as ApplicationServer; 
} 

protected static EntityBase QuerySingleResultAndCacheEtag(Func<IDocumentSession, EntityBase> func) 
{ 
    if (func == null) { throw new ArgumentNullException("func"); } 

    using (IDocumentSession session = Database.OpenSession()) 
    { 
     EntityBase entity = func.Invoke(session); 
     if (entity == null) { return null; } 
     CacheEtag(entity, session); 
     return entity; 
    } 
} 

उत्तर

8

अपवाद राज्यों के रूप में, सर्वर ToUpperInvariant() समझ में नहीं आता है। जहां तक ​​मुझे पता है, RavenDB एक कस्टम लोअरकेसकेवर्डएनलज़र का उपयोग करता है, इसलिए डिफ़ॉल्ट क्वेरी केस-असंवेदनशील होते हैं। अधिक जानकारी के लिए See the RavenDB documentation on analyzers

+0

ठीक है, शांत, मैं ऊपरी मामले में परिवर्तित करके तुलना करने की कोशिश कर रहा था, और यह भी आवश्यक नहीं था। मैंने बस इसे परिवर्तित किए बिना कोशिश की और यह काम किया। धन्यवाद! –

+0

धन्यवाद! मैं वही काम करने की कोशिश कर रहा था; इस बारे में बिल्कुल नहीं पता था। रवींद्र। – Darryl

+0

तुलनात्मक व्यवहार की तरह "प्रोग्रामिंग भाषा" की अपेक्षा कर रहा था और एक ही मुद्दे में भाग गया। मुझे लगता है कि मुझे "डेटाबेस जैसे" तुलना की उम्मीद करनी चाहिए जो आम तौर पर डिफ़ॉल्ट रूप से केस को अनदेखा कर देती है। धन्यवाद! –

संबंधित मुद्दे