我将自动映射器5.2从Dto映射到Model,从Model映射到Dto。 但是我的问题是,当我进行映射时,它有0个元素。 这两个实体是相同的。
AutoMapperConfiguration.cs
public class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(x =>
{
x.CreateMap<PaisDto, Pais>().ReverseMap();
x.CreateMap<List<PaisDto>, List<Pais>>().ReverseMap();
x.CreateMap<Pais, PaisDto>().ReverseMap();
x.CreateMap<List<Pais>, List<PaisDto>>().ReverseMap();
});
}
}
PaisService.cs
public IEnumerable<PaisDto> GetAll()
{
AutoMapperConfiguration.Configure();
List<PaisDto> dto = new List<PaisDto>();
IEnumerable<Pais> paises = _paisRepository.GetPaisAll();
dto = Mapper.Map<List<Pais>,List<PaisDto>>(paises.ToList());
return dto.ToList();
}
会发生什么?
答案 0 :(得分:1)
不确定这是否是您要找的,但您可以为单个pais / paisDto创建地图
当您想要映射列表时,您可以使用自动播放器中的EF6扩展
https://www.nuget.org/packages/AutoMapper.EF6/
然后你可以使用
.ProjectTo<TDestination>(mapperConfig)
在需要映射的列表上
答案 1 :(得分:1)
您不需要从列表映射到列表 - Automapper了解列表,您只需要告诉它有关各个项目的信息:
Mapper.Initialize(x =>
{
x.CreateMap<Pais, PaisDto>().ReverseMap();
});
然后它可以自己映射列表:
IEnumerable<Pais> paises = _paisRepository.GetPaisAll();
List<PaisDto> dto = Mapper.Map<List<PaisDto>>(paises);
return dto;
您也不需要在列表上调用.ToList,只需另一个副本。