我是否需要两种方式创buildautomapper createmap?

这可能是一个愚蠢的问题! (n00b到AutoMapper和时间短!)

我想使用AutoMapper从EF4实体映射到ViewModel类。

1)如果我打电话

CreateMap<ModelClass, ViewModelClass>() 

那么我也需要打电话

 CreateMap<ViewModelClass, ModelClass>() 

执行反向?

2)如果两个类具有相同的属性名称,那么我是否需要一个CreateMap语句,或者这只是“特定/自定义”映射?

在AutoMapper中,你有一个Sourcetypes和一个Destinationtypes。 因此,只有拥有相应的CreateMap,才能在Sourcetypes和Destinationtypes之间进行映射。 所以要回答你的问题:

  1. 不需要定义反向映射。 只有打算回映时,您才需要这样做。
  2. 是的,您需要调用CreateMap来指示这些types是可映射的,否则当您调用Map<TSource, TDest>时,将会抛出一个exceptionMap<TSource, TDest>告诉您源和目标types之间不存在映射。

关于这个问题的人的信息。 现在似乎有一个内置的方法,通过在您的CreateMap()configuration链的末尾添加一个.ReverseMap()调用来实现反向映射。

我已经使用扩展方法做映射两种方式

  public static IMappingExpression<TDestination, TSource> BothWays<TSource, TDestination> (this IMappingExpression<TSource, TDestination> mappingExpression) { return Mapper.CreateMap<TDestination, TSource>(); } 

用法:

  CreateMap<Source, Dest>().BothWays();