将自己的接口序列化为ObjectId字段?

问题描述 投票:0回答:1

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

mongodb mongodb-.net-driver
1个回答
0
投票

解决方案不是在序列化程序中开始写文档,而是直接写对象id值。

© www.soinside.com 2019 - 2024. All rights reserved.