4

我将 MongoDB 与 C# 的官方 MongoDb 驱动程序一起使用。

我的域对象都有一个字符串类型的 Id 属性

string Id { get; set;}

但我想在实际数据库中存储 12 个字节的二进制 ObjectId,这是在类映射中实现的,如下所示:

  BsonClassMap.RegisterClassMap<X>(cm => {
    cm.AutoMap();
    cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
  });

其他集合的外部 ObjectId 键也表示为字符串,也应保存为对象 ID。

现在,如果可以避免的话,我不想为每个 Id 和外键编写相同的 SetRepresenttion 内容。

那么有没有办法一劳永逸地说,所有字符串 Id 字段都应该表示为 db 中的 ObjectIds 并且名称以“Id”结尾的所有字符串属性也应该表示为 db 中的 ObjectIds?

4

1 回答 1

1

有一个称为 ISerializationOptionsConvention 的约定。看看这里的文档:http ://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial#CSharpDriverSerializationTutorial-Writeacustomconvention 。

使用它,您将能够测试成员类型是否为字符串且名称以“Id”结尾,然后将其分配给您的序列化选项。

于 2012-06-02T12:22:35.057 回答