使用 StringObjectIdGenerator 映射 Id 会在数据库中生成字符串_id



我正在将我的代码转移到新的 2.0 驱动程序,并且遇到了 ObjectId 问题。

以前,我使用 BsonId 和 BsonRepresentation属性装饰字符串 Id 属性。

现在我正在使用类映射

BsonClassMap.RegisterClassMap<Model>(cm =>
{
   cm.MapIdMember(p => p.Id).SetIdGenerator(StringObjectIdGenerator.Instance);
   cm.SetIgnoreExtraElements(true);
   cm.AutoMap();
});

在这个例子中,模型非常简单

public class Model
{
   public string Id { get; set; }
   public DateTime UpdatedTs { get; set; }
} 

但是插入后,我将对象 ID 恢复为字符串,但它也是服务器上的字符串。

MongoVue objectid 的图像是字符串

我错过了什么吗?

好的,感谢 Craig 对 mongodb 驱动程序团队的一些反馈,我得到的解决方案是:

cm.MapIdMember(p => p.Id)
  .SetIdGenerator(StringObjectIdGenerator.Instance)
  .SetSerializer(new StringSerializer(BsonType.ObjectId));   

就像装饰 Id 属性的属性一样,您需要设置在 v 2.0 中通过 SetSerializer 执行的表示

形式呵

最新更新