我的课程定义如下:
class Person
{
public String Id { get; set; }
public String Name { get; set; }
public Person Mother { get; set; }
}
我已经为Mother属性实现了一个自定义序列化程序,仅用于序列化Id。最终的BSON看起来像这样:
[{
"_id": "54df1095fa0bd7122cb2c550",
"name": "John",
"mother": { "_id": "54df1095fa0bd7122cb2c551" }
}]
如果我尝试执行查询以查找具有给定母亲的人,如下所示:
var results = await collection.Find<Person> (p => p.Mother.Id == "...").ToListAsync ();
司机抱怨如下:
{&#34;无法确定表达式的序列化信息:p.Mother.Id。&#34;}
有没有办法向驱动程序添加序列化信息,以便它知道调用我的自定义序列化程序来反序列化此类查询的人员?
答案 0 :(得分:1)
是的,您可以实现两个接口来提供序列化信息。 IBsonDocumentSerializer
和IBsonArraySerializer
。在这种情况下,您需要在客户序列化程序上实施IBsonDocumentSerializer
并处理{name} GetMemberSerializationInfo
的{{1}}调用。