自动映射到字符串

本文关键字:字符串 映射 | 更新日期: 2023-09-27 17:50:14

我尝试使用以下CreateMap()创建到字符串的映射:

Mapper.CreateMap<MyComplexType, string>()
    .ConvertUsing(c => c.Name);

但是当我尝试使用这个映射时,我得到以下错误:

类型的系统。String'没有默认构造函数

这是有道理的,但我一直在阅读,据说这应该工作。我还需要做什么吗?

自动映射到字符串

我用的是

.ProjectTo<>()

直接从DBContext集合(EF 6)投射到我的DTO,例如

db.Configuration.LazyLoadingEnabled = false;
prospects = db.Prospects.Where([my where lambda]).ProjectTo<ProspectDTO>().ToList();

具有IEnumerable<string>属性的目的地来自M-M相关的表,即

public class ProspectDTO 
{
   public IEnumerable<string> Brands { get; set; }
}

我的解决方案映射如下

AutoMapper.Mapper.CreateMap<Prospect, ProspectDTO>().ForMember(dest => dest.Brands, opts => opts.MapFrom(src => src.Brands.Select(b => b.Name)));

注意:我使用ProjectTo<>这样做是为了避免常见的延迟加载选择n+1问题,并确保体面的(快速)sql运行对DB,我有我需要的所有相关表数据。太好了。

谢谢Jimmy Bogard,你是摇滚明星!