为 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?
是的,您可以实现两个接口来提供序列化信息。 IBsonDocumentSerializer
和 IBsonArraySerializer
。在这种情况下,您需要在您的客户序列化程序上实施 IBsonDocumentSerializer
并处理对 memberName Id
.
的 GetMemberSerializationInfo
调用
我有一个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?
是的,您可以实现两个接口来提供序列化信息。 IBsonDocumentSerializer
和 IBsonArraySerializer
。在这种情况下,您需要在您的客户序列化程序上实施 IBsonDocumentSerializer
并处理对 memberName Id
.
GetMemberSerializationInfo
调用