如果我想进行双向映射,是否需要创建两个映射?
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
答案 0 :(得分:54)
是的,但如果你发现自己经常这样做:
public static class AutoMapperExtensions
{
public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
Mapper.CreateMap<TDestination, TSource>();
}
}
然后:
Mapper.CreateMap<A, B>().Bidirectional();
答案 1 :(得分:19)
是的,因为如果您更改某些属性的类型(例如DateTime - &gt; string),则它不是双向的(您需要指示Automapper如何转换字符串 - &gt; DateTime)。
答案 2 :(得分:19)
现在已经融入了AutoMapper
Mapper.CreateMap<SourceType, DestType>().ReverseMap();
答案 3 :(得分:7)
好主意埃里克! 我添加了一个返回值,因此反向映射也是可配置的。
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}