问题描述
|
这可能是一个愚蠢的问题! (n00b到AutoMapper且时间短!)
我想使用AutoMapper将EF4实体映射到viewmodel类。
1)如果我打电话
CreateMap<ModelClass,viewmodelClass>()
那我还需要打电话吗
CreateMap<viewmodelClass,ModelClass>()
执行相反的操作?
2)如果两个类具有相同的属性名称,那么我是否完全需要CreateMap语句,或者这仅用于“特定/自定义”映射?
解决方法
在AutoMapper中,您具有“源”类型和“目标”类型。因此,只有在具有对应的CreateMap的情况下,您才能在此Source类型和Destination类型之间进行映射。因此,回答您的问题:
您无需定义反向映射。仅当您打算重新映射时,才需要这样做。
是的,您需要调用CreateMap来指示那些类型是可映射的,否则在调用
Map<TSource,TDest>
时会抛出异常,告诉您源类型和目标类型之间不存在映射。
, 有关偶然发现此问题的人员的信息。现在似乎有一种内置的方法可以通过在CreateMap()
配置链的末尾添加.ReverseMap()
调用来实现反向映射。
, 我使用了扩展方法来完成两种方式的映射
public static IMappingExpression<TDestination,TSource> BothWays<TSource,TDestination>
(this IMappingExpression<TSource,TDestination> mappingExpression)
{
return Mapper.CreateMap<TDestination,TSource>();
}
用法:
CreateMap<Source,Dest>().BothWays();