C# 如何使用AutoMapper映射两个对象集合

C# 如何使用AutoMapper映射两个对象集合,c#,automapper,C#,Automapper,我尝试使用AutoMapper,但当我想映射2个集合时,我得到了一个错误。 以下是我想使用AutoMapper的实体和dto类: public class HeadQuarters { public int Id { get; private set; } public string HeadQuartersName { get; set; } public string HeadQuartersCode { get; set; } public string H

我尝试使用AutoMapper,但当我想映射2个集合时,我得到了一个错误。 以下是我想使用AutoMapper的实体和dto类:

public class HeadQuarters
{
    public int Id { get; private set; }
    public string HeadQuartersName { get; set; }
    public string HeadQuartersCode { get; set; }
    public string HeadQuartersDescription { get; set; }        
    public bool IsActiv { get; set; }
    public ICollection<Adresa> Adresa { get; set; }      
}

public class HeadQuartersDTO
{
    public string HeadQuartersName { get; set; }
    public string HeadQuartersCode { get; set; }
    public string HeadQuartersDescription { get; set; }
    public ICollection<AdresaDTO> Addresses { get; set; }        
    public EntityState Status { get; set; }
}
public static HeadQuarters DtoToEntity(HeadQuartersDTO dto)
{
    var mapper = new Mapper(MapperConfiguration());            
    return  mapper.Map<HeadQuarters>(dto);            
}

private static MapperConfiguration MapperConfiguration()
{
    return new MapperConfiguration(cfg =>
        cfg.CreateMap<HeadQuartersDTO, HeadQuarters>()
        .ForMember(dest => dest.Adresa, act => act.MapFrom(src => src.Addresses)));
}
我为使用AutoMapper编写以下代码:

public class HeadQuarters
{
    public int Id { get; private set; }
    public string HeadQuartersName { get; set; }
    public string HeadQuartersCode { get; set; }
    public string HeadQuartersDescription { get; set; }        
    public bool IsActiv { get; set; }
    public ICollection<Adresa> Adresa { get; set; }      
}

public class HeadQuartersDTO
{
    public string HeadQuartersName { get; set; }
    public string HeadQuartersCode { get; set; }
    public string HeadQuartersDescription { get; set; }
    public ICollection<AdresaDTO> Addresses { get; set; }        
    public EntityState Status { get; set; }
}
public static HeadQuarters DtoToEntity(HeadQuartersDTO dto)
{
    var mapper = new Mapper(MapperConfiguration());            
    return  mapper.Map<HeadQuarters>(dto);            
}

private static MapperConfiguration MapperConfiguration()
{
    return new MapperConfiguration(cfg =>
        cfg.CreateMap<HeadQuartersDTO, HeadQuarters>()
        .ForMember(dest => dest.Adresa, act => act.MapFrom(src => src.Addresses)));
}
公共静态总部dto实体(总部dto)
{
var mapper=new mapper(MapperConfiguration());
返回mapper.Map(dto);
}
私有静态MapperConfiguration MapperConfiguration()
{
返回新的MapperConfiguration(cfg=>
cfg.CreateMap()
.ForMember(dest=>dest.Adresa,act=>act.MapFrom(src=>src.Addresses));
}
但当我在集合中添加一些时,我得到了一个错误。这是我收到的错误消息:


如果我理解您的意图,您应该能够像下面这样更新代码:

public static HeadQuarters DtoToEntity(HeadQuartersDTO dto)
{
    var mapper = new Mapper(MapperConfiguration());            
    return  mapper.Map<HeadQuarters>(dto);            
}

private static MapperConfiguration MapperConfiguration()
{
    return new MapperConfiguration(cfg =>
        cfg.CreateMap<AdresaDTO, Adresa>()
            .ForMember(dest => dest.CityId, act => act.MapFrom(src => src.CityId ?? default(int)))
            .ForMember(dest => dest.HeadQuartersId, act => act.Ignore())
            .ForMember(dest => dest.EmployeeId, act => act.Ignore())
            .ForMember(dest => dest.ContractPersonDataId, act => act.Ignore());
        cfg.CreateMap<HeadQuartersDTO, HeadQuarters>()
            .ForMember(dest => dest.Id, act => act.Ignore())
            .ForMember(dest => dest.IsActiv, act => act.Ignore())
            .ForMember(dest => dest.Adresa, act => act.MapFrom(src => src.Addresses)));
}
公共静态总部dto实体(总部dto)
{
var mapper=new mapper(MapperConfiguration());
返回mapper.Map(dto);
}
私有静态MapperConfiguration MapperConfiguration()
{
返回新的MapperConfiguration(cfg=>
cfg.CreateMap()
.ForMember(dest=>dest.CityId,act=>act.MapFrom(src=>src.CityId??默认值(int)))
.FormMember(dest=>dest.HeadQuartersId,act=>act.Ignore())
.ForMember(dest=>dest.EmployeeId,act=>act.Ignore())
.FormMember(dest=>dest.ContractPersonDataId,act=>act.Ignore());
cfg.CreateMap()
.FormMember(dest=>dest.Id,act=>act.Ignore())
.FormMember(dest=>dest.IsActiv,act=>act.Ignore())
.ForMember(dest=>dest.Adresa,act=>act.MapFrom(src=>src.Addresses));
}

请将您的问题包含在您收到的完整错误消息中。您收到的错误是什么?您需要添加配置以处理到IsActiv和Id属性的映射。此外,您需要配置从AdresaDTO到Adresa的映射。如果您演示了如何映射这些内容,我可以演示如何正确配置AutoMapper。