2016-11-09 102 views
0

這是我的問題,我想這兩個實體映射無效,我跳投得到一個異常:Automapper 5.1.1不能映射覆雜的對象,跳投

來源:

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.Map<IEnumerable<CorpoGestor>, List<CorpoGestorDTO>>(result); 

例外:

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

EDIT

Openned在GitHub上的AutoMapper一個問題,你可以有更多的信息:Automapper 5.1.1 Can't map Complex object, aways invalid #1783

+0

這些屬性的問題:Tipo,[ForeignKey(「IdTipo」)] public int IdTipo {get;私人設置; },[ForeignKey(「IdConselho」)] public int IdConselho {get;私人設置; },公共Conselho Conselho {get;私人設置; } –

+0

我已經指出了屬性,你可以看看它們並修復 –

+0

@viveknuna我應該怎麼做?忽視? – Fals

回答

1

嘗試以下操作:

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

您需要一種數據類型轉換爲另一種。爲此,第二行添加到您的映射配置中。

另外,您應該只調用此一次。多次執行會覆蓋以前的配置。

+0

@Fals正在使用.ForMember(x => x.Tipo,y => y.MapFrom(s => s.Tipo.Nome)),所以問題不在這個字段。 –

+0

@Amy不工作!同樣的問題仍然存在,即使這種修改! – Fals

+0

不起作用不會告訴我們任何有用的東西。我們需要更多的信息。 – Amy