【问题标题】:Mongo do not generate ObjectId automatically via fulent APIMongo 不会通过 fluent API 自动生成 ObjectId
【发布时间】:2018-03-02 11:47:02
【问题描述】:

我正在从 Mongo Driver 1.x 迁移到 2.x,遇到了一个问题,即 Mongo 不能简单地为文档生成 ID。

实体:

public sealed class History
{
    public string Id { get; set; }
    public long BusinessId { get; set; }
    public ShowcaseVersion Version { get; set; }
}

映射:

cm.AutoMap();
cm.MapIdMember(c => c.Id)
    .SetIgnoreIfDefault(true)
    .SetSerializer(new StringSerializer(BsonType.ObjectId))
    .SetIdGenerator(StringObjectIdGenerator.Instance)

插入:

Collection.InsertOne(new History
{
    BusinessId = businessId,
    Version = version
});

结果:

E11000 重复键错误集合:showcases.History index:id 复制键:{ : null }

【问题讨论】:

  • 在公共ObjectId Id中转公共字符串Id?有帮助吗?

标签: c# .net mongodb mongodb-.net-driver


【解决方案1】:

如果您想使用 ObjectId 而不是 string 而不是将其更改为 ObjectId,我认为它应该可以工作。

但是如果你想像这样使用字符串,这个帖子可能是答案:using string for mongodb _id

【讨论】:

  • 是的,它确实适用于ObjectId。但是这里的问题是这个 DTO 是在 API 程序集中声明的,我不能在那里引用 MongoDriver,它应该在这个类之外配置并使用 string 因为据说我不能引用声明 ObjectId 的程序集。但是,非常有用的答案:)
  • 我需要让我的测试环境来帮助你。当我赶上时间时,我会去做。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多