我想反序列化看起来像这样的文档:
{
"_id" : ObjectId("58e67bd8df79507aa3f8a6b6"),
"value" : 10,
"stack" : [
{
"id" : "49ccbadf-5964-11e6-b1e9-549f3520935c",
"value" : 0
},
{
"id" : "49ccb5cc-5964-11e6-b1e9-549f3520935c",
"value" : 0
}
]
}
到C#类。类名是Entry,其定义如下:
public class Entry
{
public BsonObjectId _id { get; set; }
public int value { get; set; }
public List<Stack> stack { get; set; }
}
,Stack类看起来像这样
public class Stack
{
public string id { get; set; }
public int value { get; set; }
}
查询时我得到以下异常
'An error occurred while deserializing the stack property of class ConsoleApp4.Entry: Element 'id' does not match any field or property of class ConsoleApp4.Stack.'
我可以使用[BsonIgnoreExtraElements]属性装饰堆栈类,然后异常消失但我不想这样做,因为我必须在查询中使用id属性。任何人都知道我应该怎么做?我将不胜感激任何帮助。
答案 0 :(得分:1)
通过一些试验和错误得到它 - 足以用[BsonNoId]属性装饰堆栈类。
答案 1 :(得分:0)
我认为你也不需要。只需改变这样的类型:
public ObjectId Id { get; set; }
答案 2 :(得分:0)
要使用 ObjectId 类,您需要引入 nuget 包 MongoDB.Bson,这将允许您映射 _id 属性