2010-07-02 17 views
13

मैं RavenDB का उपयोग करने के लिए मौजूदा वेब एप्लिकेशन माइग्रेट करने का प्रयास कर रहा हूं।रावेनडीबी: उप-दस्तावेज़ों के लिए आईडी जनरेशन

मेरे पास वर्तमान में मेरे वेब एप्लिकेशन में पेज हैं जो आपको क्वेरीस्ट्रिंग में किसी आईडी के आधार पर श्रेणियां, उपश्रेणियां और संसाधन देखने की अनुमति देते हैं।

हालांकि मुझे पता है कि रावेनडीबी कुल जड़ों के लिए आईडी उत्पन्न करता है, लेकिन बाल संस्थाओं के लिए नहीं।

मुझे नहीं लगता कि उपश्रेणी एक समग्र रूट है (एक श्रेणी में उप श्रेणियां हैं), इसलिए मैं इसे अपने श्रेणी दस्तावेज़ का सब-दस्तावेज़ बना रहा हूं।

क्या मैं इसे उप-दस्तावेज़ बनाने में गलत हूं क्योंकि मैं क्वेरीस्ट्रिंग पर अपनी आईडी द्वारा सीधे इसे एक्सेस कर रहा हूं? लेकिन यदि नहीं, तो मुझे व्यक्तिगत उपश्रेणियों को कैसे एक्सेस करना चाहिए क्योंकि RavenDB उन संस्थाओं के लिए आईडी उत्पन्न नहीं कर रहा है जो कुल जड़ें नहीं हैं?

उत्तर

15

इस सटीक स्थिति के बारे में रावेन मेलिंग सूची पर long but interesting discussion है।

संक्षिप्त उत्तर यह है कि रावेन को ऐसा करने के लिए डिज़ाइन नहीं किया गया है, केवल रूट इकाइयों को एक आईडी मिलती है, बाकी सब कुछ एक मूल्य प्रकार के रूप में माना जाता है। लेकिन आप इसे स्वयं लागू कर सकते हैं, जानकारी के लिए थ्रेड के अंत में कोड नमूना देखें।

+0

धन्यवाद मैट। यह मेरी स्थिति का बिल्कुल वर्णन करता है। मेरे पास पर्याप्त प्रतिष्ठा होने के बाद मैं आपके उत्तर को फिर से वोट दूंगा। – Andy

7

मैं इस समस्या में भाग गया लेकिन दस्तावेजों को आईडी उत्पन्न करने के साथ सहज नहीं था क्योंकि मुझे नहीं लगता था कि यह थ्रेड सुरक्षित था, खासकर वेब आधारित वातावरण के लिए।

using (var session = Store.OpenSession()) 
{ 
    if(category.SubCategories != null) 
    { 
     var newSubCategories = data.BankAccounts.Where(x => string.IsNullOrEmpty(x.Id)); 
     foreach (var sc in newSubCategories) 
      sc.Id = session.Advanced.Conventions.GenerateDocumentKey(sc);  
    } 

    session.Store(data); 
    session.SaveChanges(); 
} 

इस तरह से मैं बच्चे को ईद के उत्पन्न करने के लिए डेटाबेस के लिए अनुमति देता हूँ और सुनिश्चित कर सकते हैं कि मैं जीता:

अंततः मैं सर्वर इसलिए की तरह एक GenerateDocumentKey पद्धति का उपयोग करके मेरे लिए पहचान-पत्र उत्पन्न का फैसला किया वास्तविक वर्ग में दौड़ की स्थिति आदि को पूरा करने की ज़रूरत नहीं है।

+2

ध्यान दें कि यह अब 'सत्र है। उन्नत। डॉक्यूमेंटस्टोर.कॉन्वेंट्स। जेनरेट डॉक्यूमेंटकी (एससी) ' –

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