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

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

问题描述:

也许这是一个愚蠢的问题,但它确实不是很明显,我:(不需要是否可以自动创建自动映射器映射?

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

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

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

恕我直言Mapper.CreateMap<Address, AddressViewModel>();,因为AutoMapper其中执行映射事后得到这一信息。

那么,为什么我写这些配置?

中快速browse through the source,看来,它存储的映射发动机,使得遵循发动机负荷的映射数据的任何电话。

这可能是由于反射可能很昂贵,AutoMapper无法知道某人仅使用Mapper.Map的次数或次数。定义:缓存:)

+0

我想你会想在全球应用或app_start中定义你的地图,不是吗? – 2012-08-01 22:30:15

+1

哦,那也是。我只是假设OP的代码是一个例子,而不是实际的代码。 – 2012-08-01 22:31:13

此外,此模式对验证您的配置是否正确非常有用(请参见https://github.com/AutoMapper/AutoMapper/wiki/Configuration-validation)。一些映射需要相当具体的配置,这可以及早发现错误。

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