Может ли autopper игнорировать пункт назначения, если он не равен нулю / изменять только пустые поля - PullRequest
5 голосов
/ 21 декабря 2010

Справочная информация: я работаю над веб-сервисом, который я хочу, чтобы ввод, который имеет нулевое поле, означал "не делать обновления". Входной объект очень похож, но не идентичен модели базы данных, поэтому мы используем automapper для выполнения преобразований.

Так что в случае обновления я хотел бы иметь возможность взять существующие значения, использовать их для переопределения любых пустых полей во входных данных, а затем сохранить их для полного обновления. Так есть ли способ заставить autopper только помещать значения в место назначения, если поле назначения равно нулю?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

Да, может, но вы, вероятно, не хотели бы проходить через стычку. Для этого вам понадобится собственный обработчик карты для каждого поля в объекте, для которого вы хотите это сделать (возможно, вы сможете совместно использовать пользовательский обработчик для свойств того же типа, но я не 100% уверен, не глядя на мой старый код).

0 голосов
/ 22 августа 2018

Недавно я решил эту проблему самостоятельно, используя PreCondition с Automapper 5.2.0.

CreateMap<Foo, Foo>()
  .ForAllMembers(opt => opt.Precondition(
    new Func<Foo, bool>( foo =>
      if (opt.DestinationMember == null) return true;
      return false;
    )
  ));

Это просматривает все элементы назначения и сначала проверяет, является ли элемент назначения нулевым, прежде чем даже смотреть на элемент источника. (Если он не нулевой, он никогда не смотрит на источник.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...