如何使用 AutoMapper 将嵌套列表映射到另一个列表
how to map nested List to another List with AutoMapper
我正在使用最新版本的 Auto Mapper 6.1.0'
。
我有 Poll
和 PolOption
表,如下所示:
public class Poll
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public virtual ICollection<PollOption> Options { get; set; }
}
public class PollOption
{
public virtual string Title { get; set; }
public int Id { get; set; }
public int PollId { get; set; }
public virtual Poll Poll { get; set; }
}
我有两个 viewModels
用于这些模型喜欢:
public class EditPollViewModel
{
public int Id { get; set; }
public virtual string Title { get; set; }
public List<PollOptionViewModel> Options { get; set; }
}
public class PollOptionViewModel
{
public int Id { get; set; }
public string Title { get; set; }
}
我将其用于 Auto Mapper 配置:
config.CreateMap<Poll, EditPollViewModel>().ForMember(dest => dest.Options, src => src.MapFrom(t => t.Options));
但是当我使用以下代码运行项目时出现错误。
return Mapper.Map<EditPollViewModel>(model);
我遇到了这个错误:
Missing type map configuration or unsupported mapping.
Mapping types: PollOption -> PollOptionViewModel
PollOption ->
PollOptionViewModel
您不需要将 Options
等具有相同名称的映射成员映射到 Options
Automapper 自动执行此操作并且您忘记将 PollOption
映射到 PollOptionViewModel
:
config.CreateMap<PollOption , PollOptionViewModel>().ReverseMap()
并更改
public List<PollOptionViewModel> Options { get; set; }
到
public ICollection<PollOptionViewModel> Options { get; set; }
在您的地图中也添加 ReverseMap()
:
config.CreateMap<Poll, EditPollViewModel>().ReverseMap()
我正在使用最新版本的 Auto Mapper 6.1.0'
。
我有 Poll
和 PolOption
表,如下所示:
public class Poll
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public virtual ICollection<PollOption> Options { get; set; }
}
public class PollOption
{
public virtual string Title { get; set; }
public int Id { get; set; }
public int PollId { get; set; }
public virtual Poll Poll { get; set; }
}
我有两个 viewModels
用于这些模型喜欢:
public class EditPollViewModel
{
public int Id { get; set; }
public virtual string Title { get; set; }
public List<PollOptionViewModel> Options { get; set; }
}
public class PollOptionViewModel
{
public int Id { get; set; }
public string Title { get; set; }
}
我将其用于 Auto Mapper 配置:
config.CreateMap<Poll, EditPollViewModel>().ForMember(dest => dest.Options, src => src.MapFrom(t => t.Options));
但是当我使用以下代码运行项目时出现错误。
return Mapper.Map<EditPollViewModel>(model);
我遇到了这个错误:
Missing type map configuration or unsupported mapping.
Mapping types: PollOption -> PollOptionViewModel
PollOption ->
PollOptionViewModel
您不需要将 Options
等具有相同名称的映射成员映射到 Options
Automapper 自动执行此操作并且您忘记将 PollOption
映射到 PollOptionViewModel
:
config.CreateMap<PollOption , PollOptionViewModel>().ReverseMap()
并更改
public List<PollOptionViewModel> Options { get; set; }
到
public ICollection<PollOptionViewModel> Options { get; set; }
在您的地图中也添加 ReverseMap()
:
config.CreateMap<Poll, EditPollViewModel>().ReverseMap()