自我引用循环报错--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());