自动映射器构造通过关系使用

问题描述 投票:0回答:1

我有一个从实体框架

Software
模型到
SoftwareDTO
的映射设置,当我像这样投影到它时,它可以正常工作:

var stuff = await ChecklistLink.AsNoTracking()
    .Select(x => x.Software)
    .ProjectTo<SoftwareDTO>(config)
    .Distinct()
    .ToArrayAsync(cancellationToken);

我想跳过那里的选择并能够直接从

ChecklistLink
投影到dto,所以我添加了这张地图:

CreateMap<ChecklistLink, SoftwareDTO>()
    .ConstructUsing((entity, ctx) => ctx.Mapper.Map<SoftwareDTO>(entity.Software));

如果我现在注释掉

.Select(x => x.Software)
行,我不会得到任何结果。我需要做哪些不同的事情?

c# entity-framework-core automapper ef-core-8.0 automapper-13
1个回答
0
投票

作为一种技巧,你可以使用扁平化

cfg.CreateMap<ChecklistLink, SoftwareDTO>()
    .IncludeMembers(src => src.Software);

此外,如果仅可查询投影需要映射,请考虑使用

CreateProjection
而不是
CreateMap
有关更多详细信息,请参阅此答案)。

© www.soinside.com 2019 - 2024. All rights reserved.