AutoMapper双向映射

时间:2010-03-13 16:17:35

标签: automapper bidirectional

如果我想进行双向映射,是否需要创建两个映射?

Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()

4 个答案:

答案 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>();
    }
}