如何将automapper与convertusing和条件一起使用?

问题描述 投票:2回答:1

我们正在.net核心中使用自动映射器将视图模型映射到dto。对于日期时间,我们希望将utc保存到我们的数据库中,但是对于用户,我们希望显示本地时区。像这样的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,但是不能使用convertusing。我们也尝试过此方法,但是最终没有被映射,或者被映射为utc时间。

.ForMember(dest => dest.StartDateTime, opt => { opt.Condition(src => !src.AllDayEvent); opt.ConvertUsing(new ToUtcTimeConverter()); })
c# datetime asp.net-core-mvc automapper
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.