我将 MongoDB 与 C# 官方 MongoDb 驱动程序一起使用。
我的域对象都有一个字符串类型的 Id 属性
string Id { get; set;}
Run Code Online (Sandbox Code Playgroud)
但我想在实际数据库中存储 12 字节的二进制 ObjectId,这是在类映射中实现的,如下所示:
BsonClassMap.RegisterClassMap<X>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});
Run Code Online (Sandbox Code Playgroud)
其他集合的外部 ObjectId 键也表示为字符串,并且也应保存为对象 ID。
现在,如果可以避免的话,我不想为每个 Id 和外键编写相同的 SetRepresenttion 内容。
那么有没有一种方法可以一劳永逸地说,所有字符串 Id 字段都应该在数据库中表示为 ObjectId,并且所有名称以“Id”结尾的字符串属性也应该在数据库中表示为 ObjectId?
有一个称为 ISerializationOptionsConvention 的约定。请查看此处的文档:http://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial#CSharpDriverSerializationTutorial-Writeacustomconvention。
使用此功能,您将能够测试成员类型是否为字符串以及以“Id”结尾的名称,然后为其分配序列化选项。
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |