在InsertOneAsync之后,MongoDB id保持为空

Ran*_*oet 3 mongodb mongodb-.net-driver

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

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

使用ObjectId作为Id似乎确实有效,但我试图阻止我的模型中的MongoDB依赖.

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

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

小智 13

我有同样的问题,并最终使用这些属性(使用2.0驱动程序):

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfDefault]
Run Code Online (Sandbox Code Playgroud)

或者等效的BsonClassMap流畅的界面:

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

我尝试使用.ReplaceOneAsync和Upsert一样工作,但总是让id仍然为null