我有一个包含嵌入式文档数组的 mongo 文档。嵌入文档有一个名为“Id”的属性。
{ Name: "Outer object", Embedded: [ {Name: "Embedded A", Id: "5f1c591a71dc237199eeaeda"} ] }
我的 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; }
}
当我将外部写入数据库时,C# 驱动程序将 Inner.Id 属性的名称更改为 _id。如何规避此自动重命名?我试过在 Id 属性上使用 [BsonElement("Id")] 属性,但没有帮助。
最佳答案
MongoDB 文档 explicitly states :
Documents in MongoDB are required to have a key,
_id
, which uniquely identifies them.
另一方面,C# 属性通常是 pascal 大小写并且不使用前缀,因此驱动程序设计者 apparently decided 强制将 Id
属性映射到 _id
数据库属性。
如果您想绑定(bind)一个非_id
属性,而该属性恰好在MongoDB 中被称为Id
,您可以声明另一个C# 属性使用 Id
以外的名称,因此驱动程序不会干扰它:
public class Inner
{
public string Name { get; set; }
[BsonElement("Id")]
public string IdStr { get; set; }
}
关于c# - 使用 mongo C# 驱动程序在嵌入式文档中维护 Id 属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523742/