自动映射到字符串
本文关键字:字符串 映射 | 更新日期: 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,你是摇滚明星!