我尝试使用以下内容创建到字符串的映射CreateMap()
:
Mapper.CreateMap<MyComplexType, string>()
.ConvertUsing(c => c.Name);
但是当我尝试使用此映射时,出现以下错误:
类型“System.String”没有默认构造函数
这是有道理的,但我一直在阅读,据说这应该有效。我还有其他事情要做吗?
我尝试使用以下内容创建到字符串的映射CreateMap()
:
Mapper.CreateMap<MyComplexType, string>()
.ConvertUsing(c => c.Name);
但是当我尝试使用此映射时,出现以下错误:
类型“System.String”没有默认构造函数
这是有道理的,但我一直在阅读,据说这应该有效。我还有其他事情要做吗?
就我而言,我正在使用
.ProjectTo<>()
直接从 DBContext 集合(EF 6)投影到我的 DTO,例如
db.Configuration.LazyLoadingEnabled = false;
prospects = db.Prospects.Where([my where lambda]).ProjectTo<ProspectDTO>().ToList();
目的地的IEnumerable<string>
属性来自 MM 相关表,即
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,并且我拥有我需要的所有相关表数据。出色的。
谢谢吉米博加德你的摇滚明星!