我想將我的 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 關注
- 197 瀏覽
添加回答
舉報
0/150
提交
取消
