在自动映射器映射期间调用异步方法

时间:2020-09-18 21:56:47

标签: automapper

我正在尝试学习自动映射器(版本10.0.0),并且正在设置我的DTO输入对象成为Entity Framework模型对象,所以我这样做了:

CreateMap<RequestInputDTO, Request>()
    .ForMember(x => x.RequestedById, x => x.Ignore())
    .ForMember(x => x.RequestedForId, x => x.Ignore())
    .ForMember(x => x.OrgHierarchyId, x => x.Ignore())
    .AfterMap((src, dst) => {
        dst.Uuid = Guid.NewGuid();
        dst.RequestedUtc = DateTime.UtcNow;
    });

到目前为止,该部分工作正常。但是,对于我要忽略的这三个属性,我必须进行数据库查找。例如,他们给我发送了一个名称,我获取了相应记录的ID,然后将其用作ID。因此,当我收到请求时,我正在这样做:

var request = _mapper.Map<Request>(dto);
request.RequestedById = await WwidToIdAsync(dto.RequestedByWwid);
request.OrgHierarchyId = await OrgHierarchyNumberToIdAsync(dto.RequestedForOrgHierarchyCode);
request.RequestedForId = await WwidToIdAsync(dto.RequestedForWwid);

虽然这似乎做对了,但我不喜欢从自动映射断开这三个项目。某人忘了这样做太容易了。由于AfterMap不同步,我无法弄清楚如何在映射过程中自动处理三行。

0 个答案:

没有答案