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

Adding serialization information for MongoDB custom serializer

我有一个class定义如下:

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 ();

driver 抱怨如下:

{"Unable to determine the serialization information for the expression: p.Mother.Id."}

有没有一种方法可以将序列化信息添加到 driver 以便它知道调用我的自定义序列化器来反序列化此类查询的 Person?

是的,您可以实现两个接口来提供序列化信息。 IBsonDocumentSerializerIBsonArraySerializer。在这种情况下,您需要在您的客户序列化程序上实施 IBsonDocumentSerializer 并处理对 memberName Id.

GetMemberSerializationInfo 调用