我使用以下配置将以下AccountDetailRecord
类映射到AccountDetailDto
,但是以某种方式我在映射局部类时缺少了一些东西。
services
.AddSingleton(new MapperConfiguration(cfg =>
{
cfg.CreateMap<AccountDetailRecord, AccountDetailDto>().ReverseMap();
cfg.CreateMap<AddressRecord, AccountDetailDto.AddressDto>().ReverseMap();
}).CreateMapper())
来源:
internal class AccountDetailRecord
{
public Guid Id { get; set; }
public string EstablishmentNumber { get; set; }
public string Name { get; set; }
}
internal class AddressRecord
{
public Guid Id { get; set; }
public string City { get; set; }
public string County { get; set; }
public int AddressTypeId { get; set; }
public string AddressTypeDescription { get; set; }
}
目的地:
public partial class AccountDetailDto
{
public Guid Id { get; set; }
public string EstablishmentNumber { get; set; }
public string Name { get; set; }
public List<AddressDto> Addresses { get; set; }
}
public partial class AccountDetailDto
{
public class AddressDto
{
public Guid Id { get; set; }
public string City { get; set; }
public string County { get; set; }
public AddressTypeDto AddressType { get; set; }
}
}
public partial class AccountDetailDto
{
public class AddressTypeDto
{
public int Id { get; set; }
public string Description { get; set; }
}
}
,但结果是AddressType
的值。
我在配置中缺少什么?
答案 0 :(得分:1)
根据类的属性,您需要反转映射,因此AutoMapper将能够将AddressTypeId
和AddressTypeDescription
的源属性展开为AddressTypeDto
对象。
仅为
创建一个非拼合类型映射配置ReverseMap
配置了展平。如果你想 展开时,必须配置Entity
->Dto
,然后调用ReverseMap
从Dto
->Entity
因此,您只需要将映射声明交换为:
cfg.CreateMap<AccountDetailDto.AddressDto, AddressRecord>().ReverseMap();