我有一个用于数据库ID的接口(这是由于体系结构的限制)。该接口仅公开公开一个字符串属性,以避免依赖于驱动程序库本身(即MongoDB.xxx)。
public interface IDatabaseId
{
string Id { get; set; }
}
我使用MongoDB的ObjectId(在内部使用ObjectId.GenerateNewId()并将字符串化的版本传递给公共ID字段,在我的数据库包装库中实现了此合同。
在我的一个业务类中,我有一个ID字段,我想将其序列化为相应集合文档中的ObjectID。
[BsonId(Order = 0)]
public IDatabaseId Id { get; set; }
我尝试使用自定义的序列化程序,在该程序中我获取字符串Id属性,并从/作为ObjectID对其进行反序列化。这可行,但是在我的mongo db集合中,_id字段不是直接的ObjectId字段,而是具有嵌入式_id字段的对象。
我的问题是,如何将我的自定义对象直接序列化为ObjectId字段?
解决方案不是在序列化程序中开始写文档,而是直接写对象id值。