如何使用自动映射器从嵌套列表映射到目标对象?
How to map from nested list to destination object with automapper?
我有一个像这样的源对象:
public class ParentDto
{
public List<EntityDto> EntityDtos { get; set; }
// some other stuff...
}
和一个像这样的目标对象:
public class SomeModel
{
[Key]
public Guid Id { get; set; }
public Entity Entity { get; set; }
}
在我的应用程序的不同部分,我已经使用配置文件将我的 EntityDto 映射到我的实体:
CreateMap<EntityDto, Entity>()
.ForMember(dest => dest.Member,
opt => opt.MapFrom(src => DoSomeStuff(src.AnotherMember)))
.ForMember(dest => dest.YetAnotherMember,
opt => opt.MapFrom(src => DoSomeOtherStuff(src.Whatever)));
是否可以重用此映射以便也映射我的父对象 Dto,其中包括一个 entityDto 列表?
CreateMap<ParentDto, SomeModel>()
.ForMember(dest => dest.Id,
opt => opt.Ignore())
// some more stuff...
// This is where I am struggling!
.ForMember(dest => dest. Entity,
opt => opt.MapFrom(src => src.EntityDtos[0]));
我将如何解决我已经拥有 EntityDto 到 Entity 的映射这一事实以及我必须处理该列表这一事实?
一个与另一个无关。您定义的映射是根据输入的对象的类型来使用的 and/or 指定的通用类型参数。换句话说,_mapper.Map<SomeModel>(parentDto)
将使用 CreateMap<ParentDto, SomeModel>
定义,而 _mapper.Map<Entity>(entityDto)
将使用 CreateMap<EntityDto, Entity>
定义。
现在,当 AutoMapper 开始映射集合 属性 时,它将默认使用 EntityDTO->Entity 映射的定义,但是如果您通过 MapFrom
指定自定义映射,例如, 那么那个优先。
我有一个像这样的源对象:
public class ParentDto
{
public List<EntityDto> EntityDtos { get; set; }
// some other stuff...
}
和一个像这样的目标对象:
public class SomeModel
{
[Key]
public Guid Id { get; set; }
public Entity Entity { get; set; }
}
在我的应用程序的不同部分,我已经使用配置文件将我的 EntityDto 映射到我的实体:
CreateMap<EntityDto, Entity>()
.ForMember(dest => dest.Member,
opt => opt.MapFrom(src => DoSomeStuff(src.AnotherMember)))
.ForMember(dest => dest.YetAnotherMember,
opt => opt.MapFrom(src => DoSomeOtherStuff(src.Whatever)));
是否可以重用此映射以便也映射我的父对象 Dto,其中包括一个 entityDto 列表?
CreateMap<ParentDto, SomeModel>()
.ForMember(dest => dest.Id,
opt => opt.Ignore())
// some more stuff...
// This is where I am struggling!
.ForMember(dest => dest. Entity,
opt => opt.MapFrom(src => src.EntityDtos[0]));
我将如何解决我已经拥有 EntityDto 到 Entity 的映射这一事实以及我必须处理该列表这一事实?
一个与另一个无关。您定义的映射是根据输入的对象的类型来使用的 and/or 指定的通用类型参数。换句话说,_mapper.Map<SomeModel>(parentDto)
将使用 CreateMap<ParentDto, SomeModel>
定义,而 _mapper.Map<Entity>(entityDto)
将使用 CreateMap<EntityDto, Entity>
定义。
现在,当 AutoMapper 开始映射集合 属性 时,它将默认使用 EntityDTO->Entity 映射的定义,但是如果您通过 MapFrom
指定自定义映射,例如, 那么那个优先。