自动映射复杂映射

Mat*_*cic 5 mapping automapper

如何映射以下内容:

public abstract class PersonBase
{
   public Address Address { get; set; }         
}

public class Address
{
  public string AddressHome { get; set; }
  public int PostalNumber { get; set; }
}

public class PersonEditVM : PersonBase
{ 
   public int PersonId { get; set; }
}

public PersonEntity
{
  public int PersonId { get; set; }
  public string AddressHome { get; set; }
  public int PostalNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想映射PersonEntityPersonEditVM.

编辑:解决了一杯咖啡,但如果它是一个更清洁的解决方案,它会很好吗?

Mapper.CreateMap<PersonEntity, PersonEditVM >()                
                .ForMember(d=>d.Address, s=>s.MapFrom(p=> new Address{
                    AddressHome = p.AddressHome,
                    PostalNumber = p.PostalNumber
                    }));
Run Code Online (Sandbox Code Playgroud)

And*_*ker 5

这是一种方法,它将你的Adress(通过正确的拼写Address方式)映射到另一个CreateMap调用:

Mapper.CreateMap<PersonEntity, PersonEditVM>()
    .ForMember(dest => dest.Adress, opt => opt.MapFrom(src => src));

Mapper.CreateMap<PersonEntity, Adress>()
    .ForMember(dest => dest.AdressHome, opt => opt.MapFrom(src => src.AdressHome))
    .ForMember(dest => dest.PostalNumber, opt => opt.MapFrom(src => src.PostalNumber));
Run Code Online (Sandbox Code Playgroud)