将文档插入MongoDB

lb3vh1jj  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(90)

我正在尝试构建一个连接到MongoDB的简单API。我有客户,我想将这些客户添加到数据库中
这是我的客户类:

public class Customer : BaseCustomer
{
    public Customer(string name, string surname, string address) : base(name, surname, address)
    {
    }
}

它继承自BaseCustomer:

public class BaseCustomer
{
    public string Key { get; }
    public string Name { get;  }
    public string Surname { get; }
    public string Address { get; }

    protected BaseCustomer(string name, string surname, string address)
    {
        Name = name;
        Surname = surname;
        Address = address;
        Key = "test";
    }
}

我只是简单地插入它像这样:

public void CreateEntry(TObject o)
{
    _mongoCollection.InsertOne(o);
}

为什么除了钥匙什么都显示了?(图像1)

如果我将BaseCustomer中的Key属性更改为public string Key { get; set; },则只显示密钥(Img2)为什么???

我只是简单地希望所有属性出现在数据库条目
Thanks in advance

fivyi3re

fivyi3re1#

你应该让MongoDB知道这件事。默认情况下,MongoDB中的序列化器会忽略带有私有setter的属性,假设它们不能直接设置(例如,在序列化过程中)。当Key属性被更改为具有公共setter时,可以在BaseCustomer中设置Key属性的值。
[BsonElement]属性可用于指定数据库条目中Key属性的名称,而无需使用公共setter。
这样的东西会有所帮助:

using MongoDB.Bson.Serialization.Attributes;

public class BaseCustomer
{
  [BsonElement("Key")]
  public string Key { get;  }
  public string Name { get;  }
  public string Surname { get; }
  public string Address { get; }

protected BaseCustomer(string name, string surname, string address)
{
    Name = name;
    Surname = surname;
    Address = address;
    Key = "test";
}

}

u4dcyp6a

u4dcyp6a2#

如果你不提供get methods,MongoDB将无法找到属性。
更改为:

public string Key { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Address { get; set; }

More info.

相关问题