Automapper-Map to string

时间:2015-05-20 19:48:11

标签: c# automapper automapper-3

我尝试使用以下CreateMap()

创建到字符串的映射
Mapper.CreateMap<MyComplexType, string>()
    .ConvertUsing(c => c.Name);

但是当我尝试使用此映射时,我收到以下错误:

  

键入&#39; System.String&#39;没有默认构造函数

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

1 个答案:

答案 0 :(得分:1)

就我而言,我正在使用

.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)));

N.B。我正在使用ProjectTo&lt;&gt;这样可以避免common lazy loading select n+1问题并确保对DB运行正常(快速)的SQL,并且我拥有所需的所有相关表数据。优秀。

谢谢Jimmy Bogard你摇滚明星!