在MongoDB中反序列化C#字典返回Null

时间:2016-03-04 15:03:44

标签: mongodb mongodb-.net-driver

我有一个简单的课程:

public class Foo
{
    public ObjectId Id { get; set; }
    public Dictionary<string, object> Bar { get; set; }
}

没有别的,没有自定义映射等。当我将它插入MongoDB时,它完美地工作,但Bar属性被忽略,但在插入时,它不是null。 我尝试添加[BsonDictionaryOptions]和[BsonElement],但这些没有效果。

2 个答案:

答案 0 :(得分:1)

出于测试目的,我添加到了Foo类

[BsonDictionaryOptions]
public Dictionary<string, object> Bar = new Dictionary<string, object>() { 
           { "1", new object() }, 
           { "2", new object() } };

当字典为空时 - 该字段为空,但当我们在其中发送数据时 - 它反映了插入的数据。

{
        "_id" : ObjectId("56d9b9e4c875835548bc62de"),
        "Bar" : {
                "1" : {

                },
                "2" : {

                }
        }
} 

当我们有:

 public Dictionary<string, string> Bar =
      new Dictionary<string, string>() { { "1", "text" }, { "2", "text" } };

然后输出:

&#34; _id&#34; :ObjectId(&#34; 56d9bb5ac875835548bc62df&#34;),         &#34;酒吧&#34; :{                 &#34; 1&#34; :&#34; text&#34;,                 &#34; 2&#34; :&#34; text&#34;         }

答案 1 :(得分:1)

问题解决了:我无意中使用了自定义序列化程序。