如何使用 AutoMapper 将嵌套列表映射到另一个列表

how to map nested List to another List with AutoMapper

我正在使用最新版本的 Auto Mapper 6.1.0'。 我有 PollPolOption 表,如下所示:

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()