自动映射:从单个源值填充的多个目标值

时间:2012-02-12 21:26:45

标签: c# asp.net-mvc entity-framework automapper

我的DTO(目的地)有一堆布尔值。

例如:

HasThisOption
HasThatOption
HasSomeOtherOption

通过对模型对象(源)的某个字段进行一些计算来填充这些值。这个计算有点贵,因此我不想对DTO上的每个字段进行相同的计算,我只想运行一次计算。

简单的解决方案是从我的控制器中调用一个函数..即.. PopulateFields(source,dest)

但我不想在我的映射器配置中为每个目标字段调用Ignore ..因为它们中有大约40个......而且它看起来很麻烦,真的没有任何意义。< / p>

在这种情况下,人们通常会做些什么?

1 个答案:

答案 0 :(得分:4)

在定义源和目标类型之间的映射时,可以使用AfterMap

Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) =>
{
    // do your custom computations and assignments here
});

如果源类型中不存在布尔字段,则在标准映射期间它们将被忽略,并且在目标中具有其默认值。 AfterMap方法允许您更改它们。