首页 > 解决方案 > 将自己的接口序列化为 ObjectId 字段?

问题描述

我有一个数据库 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 字段?

标签: mongodbmongodb-.net-driver

解决方案


解决方法不是在序列化器中写一个document start,而是直接写object id值。


推荐阅读