Это кажется настолько распространенной проблемой Automapper, что я чувствую, что на 100% должен ее упустить, хотя я прошерстил сеть. Если у меня есть исходные и конечные объекты:
class Source {
int? price { get; set; }
}
class Destination {
int price { get;set; }
}
CreateMap<Source, Destination>()
.ForAllMembers(o => o.Condition((source, destination, member) =>
(member != null) ));
Не будет работать, потому что свойство, допускающее значение NULL, по-прежнему будет использовать значение по умолчанию для этого типа, что означает, что Destination.price устанавливается равным 0 каждый раз, даже если Source.price.HasValue==false
Учитывая, что большинство DTO используют поля, допускающие значение NULL, чтобы пользователи не могли отправлять больше полей, чем требуется, возникает вопрос:
Как мы глобально настраиваем Automapper 8.1, чтобы НЕ ОТОБРАЖАТЬ какие-либо свойства, допускающие значение NULL, когда HasValue==false (т. е. оставить текущее значение Destination.price как есть).
Опять же, я потратил часы на изучение документации и примеров, но явно упустил это... извините, если это очевидно :-(