为了账号安全,请及时绑定邮箱和手机立即绑定

Automapper 忽略嵌套的集合属性

Automapper 忽略嵌套的集合属性

C#
阿波罗的战车 2021-10-24 19:25:39
我有一个简单的对象: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。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以为Cabin实体添加配置映射,AutoMapper 会在映射 Cabin 实体之前查看这些配置。

cfg.CreateMap<Cabin, Cabin>()
               .ForMember(source => source.ConnectionStatus, opt => opt.Ignore())
               .ForMember(source => source.TechnicalStatus, opt => opt.Ignore());

或者您可以使用 AfterMap 事件为这些属性定义默认值。


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信