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

AutoMapper - 将列表映射到 HashSet

AutoMapper - 将列表映射到 HashSet

C#
元芳怎么了 2021-07-02 17:01:51
我想将我的 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());


查看完整回答
反对 回复 2021-07-11
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

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