automapper:从数组映射到一个字段?
问题描述:
我有一个问题,试图将一个数组映射到类型....我得到以下错误automapper:从数组映射到一个字段?
缺少类型映射配置或不支持的映射。
映射类型: 润[] - >运行
的目标项是一个运行和源是一个运行(阵列)....设置我在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
时映射器应该做什么?从数组中获取第一项?或者最后一个?做一些聚合?如果收藏品是空的呢?
你必须写一个独立的,完整的地图为,e.g:
Mapper.CreateMap<Model.Run[], Run>()
.ForMember(x => x.NumericMember, expr => expr.MapFrom(y => y.Sum(z => z.NumericMember)))
.ForMember(//etc...);
谢谢,这就是我一直在寻找与数组和非数组creatmap,不知道你能做到这一点。是的,数组只应该包含1个项目或0 ...因此,目标对象应该为NULL或包含来自源表单元素的项目@ position 0 – Martin 2013-04-09 09:19:57
@Martin当您明确并完全指定您的项目时,地图,你可以映射任何东西(或几乎任何东西):) – 2013-04-09 09:22:31