1

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

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

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

类型“System.String”没有默认构造函数

这是有道理的,但我一直在阅读,据说这应该有效。我还有其他事情要做吗?

4

1 回答 1

2

就我而言,我正在使用

.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,并且我拥有我需要的所有相关表数据。出色的。

谢谢吉米博加德你的摇滚明星!

于 2015-11-20T00:45:02.870 回答