当我尝试从此类映射时,我发现了一些有关AutoMapper的奇怪行为
public class SkinAnalyzerResult {
public Guid Id { get; set; }
public ICollection<SkinAnalyzerQuestionAnswer> SelectedAnswers { get; set; }
public string Description { get; set; }
public ICollection<Product> RecommendedProducts { get; set; }
}
public class SkinAnalyzerQuestionAnswer {
public Guid Id { get; set; }
public String Answer { get; set; }
public ICollection<SkinAnalyzerResult> Results { get; set; }
public SkinAnalyzerQuestion Question { get; set; }
}
该课程
public class SkinAnalyzerResultDataModel {
[Key] public Guid Id { get; set; }
[Required] public ICollection<SkinAnalyzerResultQuestionAnswerDataModel> SelectedAnswers { get; set; }
public string Description { get; set; }
public ICollection<SkinAnalyzerResultProductDataModel> RecommendedProducts { get; set; }
public SkinAnalyzerDataModel SkinAnalyzer { get; set; }
}
public class SkinAnalyzerResultQuestionAnswerDataModel {
public Guid ResultId { get; set; }
public SkinAnalyzerResultDataModel Result { get; set; }
public Guid QuestionAnswerId { get; set; }
public SkinAnalyzerQuestionAnswerDataModel QuestionAnswer { get; set; }
}
public class SkinAnalyzerQuestionAnswerDataModel {
[Key] public Guid Id { get; set; }
[Required] public String Answer { get; set; }
public SkinAnalyzerQuestionDataModel Question { get; set; }
public ICollection<SkinAnalyzerResultQuestionAnswerDataModel> Results { get; set; }
}
使用此配置映射
cfg.CreateMap<SkinAnalyzerResultDataModel, SkinAnalyzerResult>()
.ForMember(dest => dest.SelectedAnswers,
opt => opt.MapFrom(
src => src.SelectedAnswers.Select(x => x.QuestionAnswer)
))
.ForMember(dest => dest.RecommendedProducts,
opt => opt.MapFrom(
src => src.RecommendedProducts.Select(x => x.Product)
))
.ReverseMap();
当我尝试这样做时,我得到了这个AutoMapperMappingException
如您所见,我已指定将SkinAnalyzerResult.Answers映射到SkinAnalyzerResultDataModel.SelectedAnswers.QuestionAnswer
有什么我错过或做错的事吗?
答案 0 :(得分:0)
SelectedAnswers
ICollection<SkinAnalyzerQuestionAnswer>
的类型为QuestionAnswer
,而SkinAnalyzerQuestionAnswerDataModel
的类型为CreateMap<SkinAnalyzerQuestionAnswerDataModel, SkinAnalyzerQuestionAnswer>()
.ForMember( //config if necessary)
,因此您还需要在两个模型之间创建映射:
app/build.gradle: