我遇到了从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": []
有没有任何方法可以逆转这个过程,而这个方法根本没有记录,或者是否需要手工完成?如果是这样,请解释一下如何做到这一点?
提前谢谢。
答案 0 :(得分:0)
我发现,如果你给IMongoCollection<T>
正确的泛型类型参数,驱动程序会自动序列化和反序列化。