2014-09-16 5 views
5

के लिए सी # पॉको के कस्टम सीरियलाइजेशन क्या दस्तावेज़ डीबी के लिए सी # पॉको के डिफ़ॉल्ट क्रमबद्धता को बदलना संभव है? उदाहरण के लिए आईडी-प्रॉपर्टी को कम केस होने की आवश्यकता होती है, लेकिन आईडी संपत्ति का डिफ़ॉल्ट क्रमिकरण ऊपरी मामला है। आदर्श रूप में हम सभी जेसन गुणों को कम केस वर्णों से शुरू करना चाहते हैं। अब तक का एकमात्र तरीका यह है कि [JsonProperty (PropertyName = "id") के साथ गुणों को सजाने के लिए है, लेकिन यह बहुत ही सुरुचिपूर्ण नहीं है।दस्तावेज़ डीबी

+0

दस्तावेज़ डीबी एसडीके एपीआई पर जेसनएसरियलाइजेशन सेटिंग्स को सेट करने की क्षमता वर्तमान में एज़ूर टीम द्वारा विकसित की जा रही है, इसलिए यह भविष्य में किसी बिंदु पर उपलब्ध होना चाहिए: https://feedback.azure.com/forums/263030 -documentdb/सुझाव/6422364-अनुमति-me-to-set-jsonserializersetting – abrown

उत्तर

1

यहाँ कुछ तरीके अपने DocumentDB दस्तावेज़ में लोअर केस या ऊंट-केस गुण प्राप्त करने के:

  • उपयोग [JsonProperty(PropertyName = "id")] आप उल्लेख किया।

  • पीओसीओ में सी # संपत्ति को कम मामले में बदलें।

  • अपने POCO DocumentDB .NET Library है, जो एक आईडी संपत्ति है (मुझे विश्वास है कि पर्दे के पीछे [JsonProperty(PropertyName = "id")] उपयोग करता है) से विस्तार Microsoft.Azure.Documents.Document है।

  • डिफ़ॉल्ट धारावाहिक का उपयोग करने के बजाय, आप Json.NET लाइब्रेरी का उपयोग अपने ऊंट-केस रिज़ॉल्वर का उपयोग करके क्रमबद्ध करने के लिए कर सकते हैं। मैट कार्लसन यहां इस पर एक बहुत अच्छा ब्लॉग पोस्ट है: http://www.matskarlsson.se/blog/serialize-net-objects-as-camelcase-json

संपादित करें: JSON serializer सेटिंग्स DocumentDB नेट एसडीके 1.16.0+ में समर्थित है। https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

+0

हाय अलियू, सवाल यह नहीं है कि जेसन.NET का उपयोग करके कैमल-केस को क्रमबद्ध करने के तरीके पर दस्तावेज़ दस्तावेज़ के लिए डिफ़ॉल्ट धारावाहिक को कैसे बदला जाए। –

+0

आह, क्षमा करें - मेरा जवाब संशोधित! –

+1

जबकि मैं जेसन.NET में डिफ़ॉल्ट क्रमबद्धता को बदलने में सक्षम था (JsonConvert.DefaultSettings सेट करके) और ऊंट मामले में संपत्ति के नामों को सहेजने के बाद, क्वेरी काम नहीं कर सका। मुझे लगता है कि DocumentDb संपत्ति नामों पर केस-संवेदनशील तुलना का उपयोग करता है। तो एक प्रश्न में obj.Id == document.id, आईडी मेल नहीं खाएंगे। –

4

वर्तमान में आप DocumentDB के डिफ़ॉल्ट serializer नहीं बदल सकते, हालांकि, अपने स्वयं के पुस्तकालय या JSON.NET का उपयोग कर इसे क्रमानुसार कर सकते हैं और ऐसा करके संग्रह करने के लिए JSON स्ट्रिंग की दुकान:

await client.CreateDocumentAsync(collectionLink, Resource.LoadFrom<Document>(stream)); 

जहां धारा आपकी जेसन स्ट्रिंग के लिए एक स्ट्रीम (फ़ाइल से हो सकती है, या इन-मेमोरी स्ट्रिंग आदि से हो सकती है)। JSON serializer सेटिंग्स DocumentDB नेट एसडीके 1.16.0+ में समर्थित है: आप internet archive's edition of my blog post बारे में अधिक जानकारी है, जो used to reside here

संपादित पा सकते हैं। https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-dotnet

+2

लिंक टूटी हुई है :( –

+1

@CarlosG साथ एसक्यूएल 2 का निर्माण करने के लिए स्विच अपने मॉडल सजाएँ।निश्चित –

+0

यहां तक ​​कि क्लाइंट कस्टम सीरियलाइजेशन सेटिंग्स का समर्थन करता है linq प्रदाता इसे अनदेखा कर रहा है। –

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