我想将我的 DTO 映射到一个实体。两者之间的唯一区别是我的 dto 使用 List 作为集合类型,而实体使用 HashSet。如何配置 Automapper 在遇到 ICollection 时自动映射到 HashSet?目前它只是用列表替换实体中的哈希集。示例类和映射:cfg.CreateMap<MachineDto, Machine>(MemberList.Source)cfg.CreateMap<Machine, MachineDto>(MemberList.Destination)public class Machine{ public Machine() { Segment = new HashSet<Segment>(); } public long ID { get; set; } public string Name { get; set; } public ICollection<Segment> Segment { get; set; }}public class Segment{ public Segment() { } public long ID { get; set; } public long MachineID { get; set; } public string Serial { get; set; }}public class MachineDto{ public MachineDto() { Segment = new List<SegmentDto>(); } public long ID { get; set; } public string Name { get; set; } public ICollection<SegmentDto> Segment { get; set; }}public class SegmentDto{ public SegmentDto() { } public long ID { get; set; } public string Serial { get; set; }}
1 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
在对 AfterMap() 进行大量摆弄之后,我找到了 UseDestinationValue 选项,定义后它将重用现有的 HashSet 而不是用列表替换 ICollection。
cfg.CreateMap<MachineDto, Machine>(MemberList.Source) .ForMember(dest => dest.Segment, opt => opt.UseDestinationValue());
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消