自我引用循环报错--autoMapper使用心得

情况1:CodeRule包含List<CodeRuleLine> CodeRuleLines 属性。

CodeRuleDto包含List<CodeRuleLineDto>CodeRuleLines 属性。

当CodeRule=>CodeRuleDto时,List<CodeRuleLine>无法直接转换List<CodeRuleLineDto>,因此设置映射时应该为

CreateMap<CodeRule, CodeRuleDto>()

                .ForMember(dest => dest.CodeRuleLines, opt => opt.MapFrom(src => src.CodeRuleLines));

同时,CodeRule的构造函数应有CodeRuleLines = new List<CodeRuleLine>();的初始化。

但是由于CodeRuleLine本身有CodeRule CodeRule的属性,同时CodeRuleLineDto也有CodeRuleDto CodeRule的属性,因此会报错自我引用循环。

这时应将AutoMapperProfile()方法中的映射改为CreateMap<CodeRuleLine, CodeRuleLineDto>().ForMember(dest => dest.CodeRule,opt=>opt.Ignore());

 

posted @ 2021-11-05 08:38  奈何碧落黄泉  阅读(96)  评论(0编辑  收藏  举报