是否可以自动创建automapper映射?

时间:2012-08-01 22:04:30

标签: c# .net asp.net-mvc-3 automapper

也许这是一个愚蠢的问题,但对我来说真的不明显:(

var address = new Address { Id = 1, Name = "John Doe" };

// Configure AutoMapper
Mapper.CreateMap<Address, AddressViewModel>();

// Perform mapping
var viewModel = Mapper.Map<Address, AddressViewModel>(address);

不需要Imho Mapper.CreateMap<Address, AddressViewModel>();,因为AutoMapper会在之后获取执行映射的信息。

那么我为什么要编写这些配置?

2 个答案:

答案 0 :(得分:5)

快速browse through the source,它似乎将它的映射存储在引擎中,以便随后的任何调用都会加载引擎中的映射数据。

这可能是因为反射可能很昂贵,并且AutoMapper无法知道有多少人或多次只使用Mapper.Map。定义:缓存:)

答案 1 :(得分:2)

如果没有别的,Automapper在执行映射时不一定会获得所有这些信息,因为您可能在CreateMap表达式中指定了任意数量的.ForMember / .AfterMap(etc)链接。您不希望在每次映射调用中都重复所有这些操作。