Automapper - 它是否映射对象列表?

问题描述 投票:0回答:2

我有以下自动映射器定义:

Mapper.CreateMap<IB.BusinessComponents.Data.LocationMaster, IB.Entites.Master.Location>();
Mapper.CreateMap<IB.BusinessComponents.Data.LocationMaster, IB.Entites.Master.Location>()
    .ForMember(destination => destination.Id, source => source.MapFrom(item => item.LocationMasterID))
    .ForMember(destination => destination.ChildLocationList, source => source.Ignore());

当我映射单个对象时,这效果很好。 但我似乎无法传递对象列表。传入列表时是否需要不同的定义,还是不可能?

automapper
2个回答
157
投票

在您的 AutoMapper 定义中:

    CreateMap<MyStuffDTO, MyStuffViewModel>()
        .ForMember(dto => dto.MyDate, opt => opt.MapFrom(src => src.LastDate))
        .ForMember(dto => dto.MyTime, opt => opt.MapFrom(src => src.LastTime))
        .ForMember(dto => dto.Category, opt => opt.MapFrom(src => src.Category));

代码中:

单身人士:

var result = Mapper.Map<MyStuffDTO, MyStuffViewModel>(obj);

列表:

var list = Mapper.Map<IList<MyStuffDTO>, IList<MyStuffViewModel>>(obj);

0
投票

有时您可能会遇到未连接到 Automepper 的异常。您需要检查这些主要功能以获得正确的映射:

  • 模型的空构造函数
  • 类似类型的列表
  • 为所有包含的属性创建映射,但MAP仅创建一次。
© www.soinside.com 2019 - 2024. All rights reserved.