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

时间:2015-03-24 20:00:40

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

我使用以下代码来使用class忽略BsonIgnore内的某些属性。但它忽略了总体目标。

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. 如何只忽略类中的某些属性?我不应该直接在BsonIgnore类中使用Role
  2. 如何忽略多个属性?像下面的东西。
  3. 代码:

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

1 个答案:

答案 0 :(得分:2)

有两种方法可以让您定义序列化类的方式:在初始化代码中使用属性或为类创建类映射类映射是一种定义类和BSON文档之间映射的结构。它包含参与序列化的类的字段和属性的列表,并且每个字段和属性定义所需的序列化参数(例如,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中找到有关此主题的更多信息。