我正在使用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:映射类型时出错。
映射类型:
在映射中,将忽略来自WeeklyVolumeviewModel的字符串属性Week。虽然它的值“v.44(0)”(带有周数的格式化字符串)似乎仍然试图映射到WeeklyVolume Week属性,这是我猜测导致错误的。类之间的所有其他映射都很有效,但是这里似乎没有正常运行,或者我错过了什么?
通过使用
设置所有映射Mapper.Initialize(cfg => cfg.Addprofile(new DummyMapperclass());
答案 0 :(得分:0)
我要改变的第一件事是
public class WeeklyVolume
{
public DateTime Week {get; set;}
}
public class WeeklyVolumeViewModel
{
public DateTime Date {get; set;}
public string Week {get; set;}
}
然后,让我们看看字段名称:您有两个具有相同名称但具有不同类型的字段。这可能会使Automapper感到困惑。他会尝试转换这些字段。
您可以尝试将WeeklyVolume上的'Week'更改为'Date',并将所有映射'Date'删除为'Date' - &gt; Automapper会自动完成所有事情。
OR 您可以尝试将字段名称Week(其中一个)更改为Week2。
让我知道结果。