Mapster - Как сделать игнорирование отображения для нулевых свойств

Я использую Mapster для отображения экземпляров Dto на объекты Model.

Dtos отправляются клиентом Javascript, отправляя только обновленные свойства.

Я хотел бы игнорировать нулевые значения и сделать так, чтобы Mapster оставил экземпляр модели без изменений для этих свойств.

Упрощенный пример, чтобы лучше объяснить сценарий:

// My .Net Dto class, used for client/server communication.
public class PersonDto
{
  public string Id { get; set; }
  public string Name { get; set; }
  public string Family { get; set; }
}

// My Model class. Let's assume is the same data as per the Dto.
public class Person
{
  public string Id { get; set; }
  public string Name { get; set; }
  public string Family { get; set; }
}

public void Update()
{
  var existingPerson = new Person
  {
    Id = "A",
    Name = "Ned",
    Family = "Stark"
  };

  var patchDataSentFromClient = new PersonDto
  {
    Id = "A",
    Name = "Rob"
  };

  patchDataSentFromClient.Adapt(existingPerson);

  // Here existingPerson.Family should be "Stark", but it gets emptied out.
  // the mapping should be equivalent to:
  // if (patchDataSentFromClient.Family != null) existingPerson.Family = patchDataSentFromClient.Family;
}

Изменить: дело в том, что я не хочу записывать условие сопоставления для каждого из тысяч свойств в моем Dtos. Я хочу, чтобы Mapster автоматически сопоставлял все строковые свойства по имени, но сохранял "патч-подобную" логику игнорирования нулевых значений.

1 ответ

Решение

Вы можете использовать IgnoreNullValues.

Другие вопросы по тегам