如何将视图模型映射到此类对象的实体? 我有一个实体Word喜欢
public class Word: BaseEntity<long>
{
public string? Name { get; set; }
public string? Definition { get; set; }
public List<WordQuest>? WordQuestList { get; set; }
}
public class WordQuest
{
public long WordId { get; set; }
public Word? Word { get; set; }
public long WordOptionId { get; set; }
public WordOption? WordOption { get; set; }
}
public class WordOption : BaseEntity<long>
{
public string? Name { get; set; }
public List<WordQuest>? WordList { get; set; }
}
public class WordVm
{
public long Id { get; set; }
public string? Name { get; set; }
public string? Definition { get; set; }
public List<WordQuestVm>? WordQuestList { get; set; }
public WordVm()
{
WordQuestList = new List<WordQuestVm>();
}
}
public class WordQuestVm
{
public long WordOptionId { get; set; }
public string? WordOption { get; set; }
}
如何使用自动映射器将 WordVm 映射到带有列表的 Word。
我尝试使用给定的代码。
CreateMap<WordVm, Word>()
.ForMember(dest => dest.WordQuestList, opt => opt.MapFrom(src => src.WordQuestList));
CreateMap<WordQuestVm, WordOption>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.WordOptionId))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.WordOption));
在映射列表时面临问题...
使用自动映射器将 WordVm 映射到 Word 的一种可能方法是创建从 WordQuestVm 到 WordQuest 的映射,然后在从 WordVm 到 Word 的映射中使用该映射。例如:
CreateMap<WordQuestVm, WordQuest>()
.ForMember(dest => dest.WordOptionId, opt => opt.MapFrom(src => src.WordOptionId))
.ForMember(dest => dest.WordOption, opt => opt.MapFrom(src => Mapper.Map<WordOption>(src)));
CreateMap<WordVm, Word>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.Definition, opt => opt.MapFrom(src => src.Definition))
.ForMember(dest => dest.WordQuestList, opt => opt.MapFrom(src => Mapper.Map<List<WordQuest>>(src.WordQuestList)));
这样就可以将WordQuestVm的嵌套列表映射到Word实体中对应的WordQuest列表。如果需要,您还可以使用 ReverseMap 方法创建从 Word 到 WordVm 的反向映射。