automapper:从一个数组映射到一个字段
本文关键字:一个 字段 映射 automapper 数组 | 更新日期: 2023-09-27 18:08:06
我在尝试将数组映射到类型时遇到了问题。我得到以下错误
Missing type map configuration or unsupported mapping.
Mapping types:
Run[] -> Run
目标项是Run,源项是Run(数组)....我在global.asax
中设置了映射 Mapper.CreateMap<Model.Run, Run>();
我想我遗漏了一些东西
当您指定了类型映射时,AutoMapper可以自动将集合映射到集合,因此当您有:
Mapper.CreateMap<Model.Run, Run>();
你可以直接用
var runs = Mapper.Map<IEnumerable<Model.Run>, IEnumerable<Run>>(source);
,因为它自然地遵循—它使用您指定的一对一映射将源集合的每个项映射到目标集合。没有自动映射T -> T[]
或T[] -> T
,映射器在映射T[] -> T
时应该怎么做?从数组中取出第一项?或者是最后一个?进行某种聚合?如果集合为空怎么办?
你必须写一个单独的,完整的地图,例如:
Mapper.CreateMap<Model.Run[], Run>()
.ForMember(x => x.NumericMember, expr => expr.MapFrom(y => y.Sum(z => z.NumericMember)))
.ForMember(//etc...);