我是否需要同时创建automapper createmap?

问题描述

| 这可能是一个愚蠢的问题! (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();