BsonArray使用静态模型

时间:2017-05-06 11:36:32

标签: c# mongodb

我遇到了从BsonDocument反序列化的问题。更确切地说,我无法弄清楚如何从BsonDocument中提取BsonArray并将其转换为List。 BsonDocument将由数据库提供。

具有相应属性的模型:

[BsonIdAttribute]
    [BsonElementAttribute("_id", Order = 1)]
    public ObjectId ID { get; set; }

    [BsonElementAttribute("nm", Order = 2)]
    public string Name { get; set; }

    [BsonElementAttribute("vc", Order = 3)]
    public List<Vocab> Vocabs { get; set; }

    [BsonElementAttribute("own", Order = 4)]
    public User Owner { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
    [BsonElementAttribute("cr", Order = 5)]
    public DateTime Created { get; set; }


    [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
    [BsonElementAttribute("md", Order = 6)]
    public DateTime Modified { get; set; }

这里有一些样本数据:

var vg = new VocabGroup("Unit 1", new List<Vocab>(), user);
Console.WriteLine(vg.ToBsonDocument().ToString());

{ "_id" : ObjectId("590dafded618ce167bc571fd"), "nm" : "Unit 1", 
"vc" :   [], 
"own" : { "_id" : ObjectId("590dafded618ce167bc571fc"),
    "unm" : "john", 
    "nm" : "John", 
    "em" : "john@somewhere.com",
    "pwd" : "password", 
    "cr" : ISODate("2017-05-06T11:13:34.954Z") }, 
"cr" : ISODate("2017-05-06T11:13:34.974Z"), 
"md" : ISODate("2017-05-06T11:13:34.974Z") }

注意"vc": [] 有没有任何方法可以逆转这个过程,而这个方法根本没有记录,或者是否需要手工完成?如果是这样,请解释一下如何做到这一点?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我发现,如果你给IMongoCollection<T>正确的泛型类型参数,驱动程序会自动序列化和反序列化。