是否可以自动创建自动映射器映射?
问题描述:
也许这是一个愚蠢的问题,但它确实不是很明显,我:(不需要是否可以自动创建自动映射器映射?
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的次数或次数。定义:缓存:)
答
此外,此模式对验证您的配置是否正确非常有用(请参见https://github.com/AutoMapper/AutoMapper/wiki/Configuration-validation)。一些映射需要相当具体的配置,这可以及早发现错误。
答
如果没有别的,Automapper不一定会在执行映射时获取所有这些信息,因为您可能已经在CreateMap表达式中指定了任意数量的.ForMember/.AfterMap(等)链接。您不希望在每次映射调用中重复所有这些操作。
我想你会想在全球应用或app_start中定义你的地图,不是吗? – 2012-08-01 22:30:15
哦,那也是。我只是假设OP的代码是一个例子,而不是实际的代码。 – 2012-08-01 22:31:13