【问题标题】:Automapper 5.1.1 Can't map Complex object, aways invalidAutomapper 5.1.1 无法映射复杂对象,无效
【发布时间】:2016-11-09 20:48:47
【问题描述】:

这是我的问题,我正在尝试映射这两个实体,但我得到了一个异常:

发件人:

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

从数据库结果调用 Mapper:

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

例外:

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

编辑

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

【问题讨论】:

  • 这些属性的问题:Tipo, [ForeignKey("IdTipo")] public int IdTipo { get;私人套装; }, [ForeignKey("IdConselho")] public int IdConselho { get;私人套装; },公共 Conselho Conselho { 得到;私人套装; }
  • 我已经指出了属性,你可以查看它们并修复它们
  • @viveknuna 我该怎么办?忽略?
  • 修复数据类型,如果没有在To Class中定义则定义
  • @viveknuna 没听懂!定义什么和在哪里?

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


【解决方案1】:

尝试以下方法:

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

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

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

【讨论】:

  • @Fals 正在使用 .ForMember(x => x.Tipo, y => y.MapFrom(s => s.Tipo.Nome)),所以问题不在这个领域。
  • @Amy 不起作用!即使进行了此修改,同样的问题仍然存在!
  • 不起作用并没有告诉我们任何有用的信息。我们需要更多信息。
  • @Amy 看到编辑,我提供了关于 GitHub 的完整信息,以及一个要点
  • @Amy 只是编辑答案说你应该只调用 Mapper.Initialize 一次,这是我的问题,我用无效的配置覆盖了我以前的配置
猜你喜欢
  • 1970-01-01
  • 2012-10-16
  • 2020-04-03
  • 2012-04-19
  • 1970-01-01
  • 2017-03-13
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多