У меня есть настройка сопоставления для перехода от моей модели Entity Framework 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)
, я не получу никаких результатов. Что мне нужно сделать по-другому?
Один трюк, который вы можете использовать, — это сглаживание:
cfg.CreateMap<ChecklistLink, SoftwareDTO>()
.IncludeMembers(src => src.Software);
P.S.
Если отображение необходимо только для запрашиваемых проекций, рассмотрите возможность использования CreateProjection
вместо CreateMap
(см. этот ответ для более подробной информации).
Вы можете попробовать использовать сглаживание
CreateMap<ChecklistLink, SoftwareDTO>().IncludeMembers(src => src.Software)
.