使用 BsonIgnore 忽略 Composite 属性 中的属性

Ignoring Properties inside Composite Property with BsonIgnore

我使用下面的代码来使用 BsonIgnore 忽略 class 中的一些 属性。但是它忽略了整个对象。

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }

    [BsonIgnore,JsonProperty(PropertyName = "CreateDate")]
    public ICollection<Role> Roles { get; set; }
}

public class Role
{
    public int RoleId {get; set;}
    public string RoleName { get; set; }
    public DateTime CreateDate { get; set;}

} 

我有 2 个问题。

  1. 如何只忽略 class 中的某些属性?我不应该直接在 Role class.
  2. 中使用 BsonIgnore
  3. 如何忽略多个属性?如下所示。

代码:

[BsonIgnore,JsonProperty(PropertyName = "CreateDate")]
[BsonIgnore,JsonProperty(PropertyName = "RoleId")]
public ICollection<Role> Roles { get; set; }

您可以通过两种方式定义 classes 的序列化方式:使用属性或为您的 [= 创建 class 映射 20=] 在你的初始化代码中。 class map 是定义 class 和 BSON 文档之间映射的结构。它包含参与序列化的 class 字段和属性的列表,并且为每个定义所需的序列化参数(例如,BSON 元素的名称、表示选项等)。所以,在你的情况下你可以这样做:

  BsonClassMap.RegisterClassMap<Role>(cm =>
  {
     cm.AutoMap();// Automap the Role class
     cm.UnmapProperty(c => c.RoleId); //Ignore RoleId property
     cm.UnmapProperty(c => c.CreateDate);//Ignore CreateDate property
  });

您可以在此 link.

中找到有关此主题的更多信息