使用mongo C#驱动程序在嵌入式文档中维护Id属性名称

Joe*_*ris 9 c# mongodb mongodb-.net-driver

我有一个包含一系列嵌入文档的mongo文档.嵌入的文档具有名为"Id"的属性.

{ Name: "Outer object", Embedded: [ {Name: "Embedded A", Id: "5f1c591a71dc237199eeaeda"} ] }
Run Code Online (Sandbox Code Playgroud)

我的C#映射对象看起来像这样(显然是简化)

public class Outer
{
    public string Name { get; set; }
    public IEnumerable<Inner> Inners { get; set; }
}

public class Inner
{
    public string Name { get; set; }
    public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我写一个外部数据库时,C#驱动程序将Inner.Id属性的名称更改为_id.如何绕过这种自动重命名?我尝试在Id属性上使用[BsonElement("Id")]属性,但它没有帮助.

Dan*_*mov 14

MongoDB文档明确指出:

MongoDB中的文档需要有一个密钥_id,它可以唯一地标识它们.

在另一方面,C#属性通常都是帕斯卡情况等驱动开发不使用前缀显然决定映射强制Id属性_id数据库属性.

如果要绑定恰好在MongoDB中调用的非_id属性,可以声明另一个名称不是的C#属性,以便驱动程序不会干扰它:IdId

public class Inner
{
    public string Name { get; set; }

    [BsonElement("Id")]
    public string IdStr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)