MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

तत्व 'आईडी' नेस्टेड कक्षाओं के साथ किसी भी क्षेत्र या त्रुटि की संपत्ति से मेल नहीं खाता

लंबी कहानी छोटी:यह सब सम्मेलनों के बारे में है। MongoDB .NET ड्राइवर स्थिर वर्ग ConventionRegistry . को उजागर करता है जो आपको अपने स्वयं के सम्मेलनों को पंजीकृत करने की अनुमति देता है (अधिक यहाँ ) इसके अतिरिक्त दो "अंतर्निहित" परंपराएं हैं __defaults__ और __attributes__ . गहरी खुदाई (ड्राइवर जीथब ) आप पा सकते हैं कि यह एक काफी दिलचस्प सम्मेलन दर्ज करता है:

new NamedIdMemberConvention(new [] { "Id", "id", "_id" })

जिसका मतलब है कि id सदस्यों को नियमित BSON _id तत्व माना जाएगा।

इसे कैसे ठीक करें?

आप डिफ़ॉल्ट परंपराओं से छुटकारा पा सकते हैं

ConventionRegistry.Remove("__defaults__");

हालाँकि स्वचालित रूप से आप अन्य सभी ड्राइवर सम्मेलनों को छोड़ देंगे जो कि बहुत जोखिम भरा है। वैकल्पिक रूप से आप एक नकली संपत्ति बना सकते हैं जो हमेशा खाली रहेगी:

public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }

    [BsonId]
    public ObjectId FakeId { get; set; }
}

या आप बस BsonNoId . का उपयोग कर सकते हैं विशेषता जो

[BsonNoId]
public class SubServiceDef
{
    [BsonElement("id")]
    public int Id { get; set; }
}

तो सम्मेलन आपकी id setting सेट कर रहा होगा क्लास मैप में IdMember के रूप में लेकिन फिर पोस्टप्रोसेसिंग के दौरान यह विशेषता IdMember को शून्य होने के लिए मजबूर कर देगी और आपकी क्लास सफलतापूर्वक deserialized हो जाएगी



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. समुदाय से MongoDB उपकरण जो ClusterControl का पूरक है

  2. पायमोंगो:कर्सर का क्या होता है जब no_cursor_timeout=True

  3. वस्तु सरणियों बनाम वस्तुओं पर मोंगो अनुक्रमण

  4. कनेक्ट-मोंगो सत्र स्वचालित रूप से हटाए नहीं जा रहे हैं

  5. MongoKit में कर्सर कैसे बंद करें