Automapper 忽略嵌套的集合属性

我有一个简单的对象:


public class Project : Entity

{

    public uint ProjectId { get; set; }

    public virtual ICollection<Cabin> Cabins { get; set; }

}


public class Cabin : Entity

{

    public IPAddress IpAddress { get; set; }

    public int Port { get; set; }

    public DateTime LastConnection { get; set; }


    public byte ConnectionStatus { get; set; }

    public byte TechnicalStatus { get; set; }


    public Project Project { get; set; }

    public int ProjectId { get; set; }

}

因此,使用自动映射器从一个映射到另一个带有一些忽略的映射看起来像:


        var mapperConfig = new MapperConfiguration(cfg =>

        {

            cfg.CreateMap<Project, Project>()

               .ForMember(source => source.Id, opt => opt.Ignore())

               .ForMember(source => source.ProjectId, opt => opt.Ignore())

               .ForMember(source => source.Cabins, opt => opt.MapFrom(cab => cab.cabins));

        });

它可以将一个项目对象映射到另一个项目对象,并忽略 id 和项目 id 并映射集合。


但是在那个级别上,是否可以设置 source.Cabins 中的哪些属性将被忽略?


例如,我想忽略 ConnectionStatus、TechnicalStatus。


阿波罗的战车
浏览 229回答 1
1回答

慕田峪4524236

您可以为Cabin实体添加配置映射,AutoMapper 会在映射 Cabin 实体之前查看这些配置。cfg.CreateMap<Cabin,&nbsp;Cabin>() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ForMember(source&nbsp;=>&nbsp;source.ConnectionStatus,&nbsp;opt&nbsp;=>&nbsp;opt.Ignore()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ForMember(source&nbsp;=>&nbsp;source.TechnicalStatus,&nbsp;opt&nbsp;=>&nbsp;opt.Ignore());或者您可以使用 AfterMap 事件为这些属性定义默认值。
打开App,查看更多内容
随时随地看视频慕课网APP