Automapper 5.1.1无法映射复杂对象,远离无效

时间:2016-11-09 20:48:47

标签: c# asp.net-web-api2 automapper automapper-5

这是我的问题,我正在尝试映射这两个实体,而且我也有例外:

发件人:

public int IdCorpoGestor { get; private set; }
    public string Nome { get; private set; }
    public string Email { get; private set; }
    public string Federacao { get; private set; }
    public DateTime DataIniMandato { get; private set; }
    public DateTime DataFimMandato { get; private set; }
    public string Telefone1 { get; private set; }
    public string Telefone2 { get; private set; }
    public int IdConselho { get; private set; }
    [ForeignKey("IdConselho")]
    public Conselho Conselho { get; private set; }
    public int IdTipo { get; private set; }
    [ForeignKey("IdTipo")]
    public Indicador Tipo { get; private set; }
    public bool Ativo { get; private set; }
}

public class CorpoGestorDTO
{
    public int IdCorpoGestor { get; set; }
    public string Nome { get; set; }
    public string Email { get; set; }
    public string Federacao { get; set; }
    public DateTime DataIniMandato { get; set; }
    public DateTime DataFimMandato { get; set; }
    public string Telefone1 { get; set; }
    public string Telefone2 { get; set; }
    public int IdConselho { get; set; }
    public int IdTipo { get; set; }
    public bool Ativo { get; set; }
    public string Tipo { get; set; }
}

映射:

 Mapper.Initialize(cfg => cfg.CreateMap<CorpoGestor, CorpoGestorDTO>()
            .ForMember(x => x.Tipo, y => y.MapFrom(s => s.Tipo.Nome)));

从DataBase结果调用Mapper:

Mapper.Map<IEnumerable<CorpoGestor>, List<CorpoGestorDTO>>(result);

例外:

  
    

缺少类型地图配置或不支持的映射

  

修改

在AutoMapper的GitHub上打开一个问题,您可以在那里获得更多信息:Automapper 5.1.1 Can't map Complex object, aways invalid #1783

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

Mapper.Initialize(cfg => 
{
    cfg.CreateMap<CorpoGestor, CorpoGestorDTO>();
    cfg.CreateMap<Indicador, string>().ConvertUsing(x=> x.Nome);
}

您需要将一种数据类型转换为另一种数据类型。为此,第二行将添加到映射配置中。

此外,您应该只调用一次。多次执行将覆盖以前的配置。