【发布时间】:2018-01-22 06:54:19
【问题描述】:
我使用的是 Automapper 6.2.2 版,但在两个类之间的映射存在问题。 Automapper 在项目中用于所有“映射目的”,并且适用于除此之外的所有情况。
public class WeeklyVolume
{
public DateTime Week
}
public class WeeklyVolumeViewModel
{
public DateTime Date
public string Week
}`
类之间的映射如下:
CreateMap<WeeklyVolumeViewModel, WeeklyVolume>()
.ForMember(dest => dest.Week, opt => opt.MapFrom(src => src.Date))
CreateMap<WeeklyVolume, WeeklyVolumeViewModel>()
.ForMember(dest => dest.Week, opt => opt.Ignore())
.ForMember(dest => dest.Date, opt => opt.MapFrom(src => src.Week));
当使用此映射时
Mapper.Map<IList<WeeklyVolumeViewModel>, IList<WeeklyVolume>>(weeklyVolumes));
抛出异常:
消息:AutoMapper.AutoMapperMappingException:错误映射类型。
映射类型:
- System.FormatException : v. 44 (0) 不是 DateTime 的有效值。
- System.FormatException : 字符串未被识别为有效
- 日期时间。从索引 0 开始有一个未知单词。
在映射中,WeeklyVolumeviewModel 中的字符串属性 Week 被忽略。虽然它的值“v. 44 (0)”(带有星期数的格式化字符串)似乎仍然试图映射到 WeeklyVolume Week 属性,这就是我猜测的错误原因。类之间的所有其他映射都运行良好,但在这里它似乎无法正常运行,还是我遗漏了什么?
所有的映射都是通过使用设置的
Mapper.Initialize(cfg => cfg.Addprofile(new DummyMapperclass());
【问题讨论】:
标签: c# mapping automapper