2015-09-09 6 views
5

में बहुरूपता/विरासत का उपयोग कर सकता हूं मेरे पास एक कस्टम फॉर्म ऑब्जेक्ट संरचना है जिसका उपयोग मैं सफलतापूर्वक mongodb के साथ करता हूं।क्या मैं सी # दस्तावेज़ डीबी ड्राइवर

मैं मोंगो को DocumentDb के साथ बदलने की संभावना की जांच कर रहा हूं।

मेरी कक्षा संरचना में आधार नियंत्रण होता है जो विभिन्न प्रकार के नियंत्रण से प्राप्त होता है। जैसे टेक्स्टबॉक्स नियंत्रण, ड्रॉपडाउन नियंत्रण

मोंगो में मैं वास्तविक प्रकार को स्टोर करने के लिए भेदभावकर्ता फ़ील्ड का उपयोग करता हूं, सी # दस्तावेज़ डीबी ड्राइवर में मैं एक ही सुविधा नहीं देख सकता।

नीचे एक नमूना है कि कैसे माँगो मेरी कक्षा संरचना को स्टोर करता है।

{ 
    "_t" : "TextboxControl", 
    "LabelText" : "Location of incident", 
    "IsRequired" : true, 
    "_id" : "cbe059d9-b6a9-4de2-b63b-14d44b022e37" 
} 

documentdb संरचना में

{ 
    "LabelText": "Location of incident", 
    "IsRequired": true, 
    "id": "cbe059d9-b6a9-4de2-b63b-14d44b022e37" 
} 

तरह लग रहा है आप मोंगो संस्करण एक "_t" संपत्ति वास्तविक प्रकार बताते हुए है देख सकते हैं, यह तो प्रयोग किया जाता है जब मैं बनाने के लिए डेटा को पढ़ने सही प्रकार दस्तावेज़ डीबी संस्करण में यह केवल फ़ील्डटाइप

+0

उचित समर्थन अंत में एमएस द्वारा पर काम किया जा रहा है: https://github.com/Azure/azure-documentdb-dotnet/issues/229 – AndyJ

उत्तर

3

खोज के कई हफ्तों के बाद मैं अंत में जवाब

https://github.com/markrexwinkel/azure-docdb-linq-extension

मूल रूप से इस पुस्तकालय DocumentDb के सी # एसडीके प्रदान करता है और के लिए कस्टम JSON सेटिंग लागू करने की अनुमति देता बारे में जाना। हुड के तहत दस्तावेज़ डीबी ड्राइवर उपयोगकर्ता json.net।

अब मुझे संपत्ति "$ प्रकार" मिलती है जो कि न्यूटॉन्सॉफ्ट की उत्कृष्ट json.net लाइब्रेरी में निर्मित एक सुविधा है।

मेरे json अब लग रहा है

तरह
{ 
    "$type" : "MyNameSpace.DropDownSingleFormBuilderControlTemplate, MyLibrary", 
    "LabelText" : "Label Text" 
    "IsRequired" : true, 
    "_id" : "cbe059d9-b6a9-4de2-b63b-14d44b022e37" 
} 
JsonSerializerSettings के लिए
0

मुझे आश्चर्य है कि आपको वास्तव में दस्तावेज़ डीबी में ऐसा करने की आवश्यकता है या नहीं।

आप इस तरह के रूप में प्रकार प्रदान कर सकते हैं:

private TextBoxControl GetControl(string link) 
{ 
    return client.CreateDocumentQuery<TextBoxControl>(link, "SELECT TOP 1 * FROM Controls"); 
} 

मेरे वाक्य रचना बाहर हो सकता है लेकिन CreateDocumentQuery<T> हिस्सा क्या आप प्रकार स्टोर करने के लिए जरूरत के बिना की जरूरत है क्या करना चाहिए।

+0

होगा संभवतः कुछ परिदृश्यों के लिए काम करते हैं। लेकिन मेरा विशिष्ट सेटअप मैं इस प्रकार को नहीं जानता, इसलिए प्रकार जेसन में संग्रहीत है। –

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