मुझे एक ही मुद्दे का सामना करना पड़ा था। MongoDB कोड में डिबगिंग के बाद, मैंने देखा कि विशिष्ट प्रकार के बजाय इंटरफ़ेस का उपयोग करते समय एक अलग धारावाहिक लागू किया जाता है। इस मामले में, भेदभावपूर्णइंटरफ़ेससेरियलाइज़र इंटरफ़ेस के लिए धारावाहिक के रूप में प्रयोग किया जाता है, जबकि BsonClassMapSerializer विशिष्ट प्रकार के लिए उपयोग किया जाता है।
इंटरफ़ेस के लिए इस धारावाहिक के साथ, कार्यान्वयन वर्ग का क्लासमैप इंटरफ़ेस से जुड़ा नहीं है। इसलिए यह अनजान है कि Id bson id फ़ील्ड है और इसे '_id' कुंजी से मैप किया जाना चाहिए। इसलिए अपवाद उठाया गया है।
मेरे लिए कारगर समाधान ImpliedImplementationInterfaceSerializer . का उपयोग करना है :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity
{
// snip...
}
यह विशेषता सीरिएलाइज़र को पंजीकृत करती है और IEntity के लिए Entity के bson क्लासमैप का उपयोग करने के लिए परिभाषित करती है ताकि Id संपत्ति को ठीक से मैप किया जा सके। मुझे यह समाधान @Robert बेकर के लिए उनके उत्तर में धन्यवाद मिला:ऑब्जेक्ट को MongoDB C# Driver के साथ इंटरफेस के रूप में डिसेरिएलाइज करें