Игнорирование свойств внутри составного свойства с помощью BsonIgnore

1

Я использую приведенное ниже код для игнорирования некоторого свойства внутри 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. Как игнорировать несколько свойств? Что-то вроде ниже.

Код:

[BsonIgnore,JsonProperty(PropertyName = "CreateDate")]
[BsonIgnore,JsonProperty(PropertyName = "RoleId")]
public ICollection<Role> Roles { get; set; }
Теги:
mongodb-.net-driver

1 ответ

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
  });

Вы можете найти более подробную информацию по этому вопросу в этой ссылке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню