InsertOneAsync 后 MongoDB id 保持为空

标签 mongodb mongodb-.net-driver

我有一个基类 Entity,它有一个字符串 Id 成员和一个派生类 A。

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

使用 ObjectId 作为 Id 似乎可行,但我试图防止我的模型依赖 MongoDB。

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

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

最佳答案

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

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

或等效的 BsonClassMap 流畅接口(interface):

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

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

关于InsertOneAsync 后 MongoDB id 保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799842/

相关文章:

mongodb - 按值和条件分组

c# - Mongo C# 驱动程序 - 包含过滤器

c# - 反序列化错误 ASP.NET MongoDB

c# - 如何使用 MongoDB C# 驱动程序聚合 $lookup?

mongodb - mongodb 中数组元素的搜索查询

javascript - (AZURE cosmosDB/mongoDB) 更新数组中对象的特定元素的字段

javascript - 使用 mongoose 的 Mongo 自定义排序策略

mongodb - 自动 mongodump : how to hide password from ps output?

c# - Mongodb 无法插入我的所有记录

c# - 有没有人对 10Gen 支持的 c# 驱动程序有问题