Мы используем ядро automapper. net ядро, чтобы отобразить модели представления в dtos. Для datetime мы хотели бы сохранить ut c в нашей базе данных, но для пользователя мы хотели бы отобразить местный часовой пояс. Это хорошо сочетается с ConvertUsing следующим образом:
CreateMap<CreateAgendaItemViewModel, AgendaItemDto>()
.ForMember(dest => dest.StartDateTime, opt => opt.ConvertUsing(new ToUtcTimeConverter()))
.ReverseMap()
.ForMember(dest => dest.StartDateTime, opt => opt.ConvertUsing(new ToLocalTimeConverter()))
Пока все хорошо, если вы всегда хотите изменить время. Однако возможно, что установлена только дата, а не время (потому что это событие на весь день), и мы хотели бы сохранить время следующим образом: 2020-04-09 00: 00: 00.0000000. У нас есть логическое значение в моделях, которое указывает, действительно ли это событие на весь день или нет. Как мы можем обусловить конвертирование?
Мы уже пробовали MapFrom с условием, но оно не может иметь конвертирование. Мы также попробовали это, но в итоге это не было отображено или отображено на время c.
.ForMember(dest => dest.StartDateTime, opt => { opt.Condition(src => !src.AllDayEvent); opt.ConvertUsing(new ToUtcTimeConverter()); })