添加MongoDB自定义序列化程序的序列化信息

时间:2015-02-14 09:49:18

标签: c# serialization mongodb-.net-driver querying

我的课程定义如下:

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;}

有没有办法向驱动程序添加序列化信息,以便它知道调用我的自定义序列化程序来反序列化此类查询的人员?

1 个答案:

答案 0 :(得分:1)

是的,您可以实现两个接口来提供序列化信息。 IBsonDocumentSerializerIBsonArraySerializer。在这种情况下,您需要在客户序列化程序上实施IBsonDocumentSerializer并处理{name} GetMemberSerializationInfo的{​​{1}}调用。