mapping - Automapper 复杂映射

标签 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; }
}

我要 map PersonEntityPersonEditVM .

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

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

最佳答案

这是一种方法,它会 split 您的 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));

关于mapping - Automapper 复杂映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10025483/

相关文章:

c - 虚拟页面权限位和区域结构权限位之间的区别

python - 使用 Python 映射 Excel 数据

hibernate - 在一对多 Hibernate 映射中使用部分复合键

c# - 如何使 AutoMapper 根据 MaxLength 属性截断字符串?

mapping - 使用 JVectorMap 弹出带有自己文本的窗口

asp.net-mvc - EF 映射对象的不兼容数据读取器异常

c# - 如何在 ASP.NET Core 中设置 Automapper

asp.net-mvc - 在层之间复制模型

c# - EF Core、OData v4、Automapper - 使用嵌套 $expand 查询时出现空引用异常

c# - 将实体分页类映射到 dto 分页类