MongoDB ID 在 InsertOneAsync 后保持为空

MongoDB id remains null after InsertOneAsync

我有一个基础 class 实体,它有一个字符串 Id 成员和一个派生的 class A.

但是当创建派生的新实例 class 并使用 InsertOneAsync 将其添加到我的集合中时,文档被添加到数据库中,Id 值为 null。

使用 ObjectId 作为 Id 似乎可行,但我正在努力防止 MongoDB 依赖我的模型。

我也尝试了下面的代码,但是结果是一样的:

BsonClassMap.RegisterClassMap<Entity>(cm =>
{
    cm.MapIdField(x => x.Id).SetSerializer(new StringSerializer(BsonType.ObjectId));
});

您是否尝试不在模型中使用 ObjectID。 ID 不必是 objectID。您可以将字符串字段装饰为 ID。

我已将字符串 属性 与 [BsonId] 属性一起使用,没有任何问题。

我遇到了同样的问题,并最终使用这些属性让它工作(使用 2.0 驱动程序):

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfDefault]

或等效的 BsonClassMap 流畅接口:

BsonClassMap.RegisterClassMap<Entity>(cm =>
{
      cm.MapIdField(x => x.Id)
      .SetSerializer(new StringSerializer(BsonType.ObjectId))
      .SetIgnoreIfDefault(true);
});

我尝试在打开 Upsert 的情况下使用 .ReplaceOneAsync 进行同样的工作,但这总是让 id 仍然为 null