Mongo不会通过fulent API自动生成ObjectId

时间:2017-09-21 08:03:22

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

我正在从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   dup key:{:null}

1 个答案:

答案 0 :(得分:1)

如果你想使用ObjectId代替字符串而不是将其更改为ObjectId,我认为它应该有用。

但是如果你想像你一样使用字符串,这篇文章可能会回答:using string for mongodb _id