Я использую приведенное ниже код для игнорирования некоторого свойства внутри 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 вопроса.
BsonIgnore
непосредственно в классе Role
.Код:
[BsonIgnore,JsonProperty(PropertyName = "CreateDate")]
[BsonIgnore,JsonProperty(PropertyName = "RoleId")]
public ICollection<Role> Roles { get; set; }
Существует два способа определить, как вы хотите сериализовать свои классы: использование атрибутов или создание карты классов для вашего класса в коде инициализации. Карта классов - это структура, которая определяет сопоставление между классом и документом 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
});
Вы можете найти более подробную информацию по этому вопросу в этой ссылке.