NoP*_*God 4 c# asp.net-mvc entity-framework automapper
我的 DTO(目标)有一堆布尔值。
例如:
HasThisOption
HasThatOption
HasSomeOtherOption
Run Code Online (Sandbox Code Playgroud)
这些值是通过对模型对象(源)的字段之一进行一些计算来填充的。此计算成本有点高,因此我不想对 DTO 上的每个字段进行相同的计算,而是只想运行一次计算。
简单的解决方案是从我的控制器调用一个函数..即.. PopulateFields(source, dest)
但我不想为我的映射器配置中的每个目标字段调用 Ignore...因为大约有 40 个目标字段...而且它看起来很混乱,而且这样做真的没有任何意义。
在这种情况下,人们通常会做什么?
AfterMap您可以在定义源类型和目标类型之间的映射时使用:
Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) =>
{
// do your custom computations and assignments here
});
Run Code Online (Sandbox Code Playgroud)
如果布尔字段不存在于源类型中,则它们在标准映射期间无论如何都将被忽略,并在目标中具有默认值。该AfterMap方法允许您更改它们。
| 归档时间: |
|
| 查看次数: |
2028 次 |
| 最近记录: |