C# 自动映射忽略嵌套集合属性

C# 自动映射忽略嵌套集合属性,c#,automapper,C#,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 { ge

我有一个简单的目标:

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; }
}
公共类项目:实体
{
公共uint ProjectId{get;set;}
公共虚拟ICollection舱{get;set;}
}
公共舱:实体
{
公共IPAddress IPAddress{get;set;}
公共int端口{get;set;}
公共DateTime LastConnection{get;set;}
公共字节连接状态{get;set;}
公共字节技术状态{get;set;}
公共项目{get;set;}
公共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));
        });
var-mapperConfig=新的MapperConfiguration(cfg=>
{
cfg.CreateMap()
.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以及映射集合

但在这个级别上,是否可以设置源文件中的哪些属性。将忽略小木屋


例如,我想忽略ConnectionStatus,TechnicalStatus。

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

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

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

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

cfg.CreateMap<Cabin, Cabin>()
               .ForMember(source => source.ConnectionStatus, opt => opt.Ignore())
               .ForMember(source => source.TechnicalStatus, opt => opt.Ignore());
cfg.CreateMap()
.ForMember(source=>source.ConnectionStatus,opt=>opt.Ignore())
.ForMember(source=>source.TechnicalStatus,opt=>opt.Ignore());
或者可以使用AfterMap事件为这些属性定义默认值