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

wor*_*ion 3 c# dto 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; }
}
Run Code Online (Sandbox Code Playgroud)

我有两个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; }

}
Run Code Online (Sandbox Code Playgroud)

我用它来自动映射器配置:

config.CreateMap<Poll, EditPollViewModel>().ForMember(dest => dest.Options, src => src.MapFrom(t => t.Options));
Run Code Online (Sandbox Code Playgroud)

但是当我运行项目时,下面的代码我得到了错误.

 return Mapper.Map<EditPollViewModel>(model);
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

缺少类型映射配置或不支持的映射.

映射类型:PollOption - > PollOptionViewModel

PollOption - >

PollOptionViewModel

Soh*_*deh 5

你并不需要具有相同的名称,如地图成员OptionsOptionsAutomapper自动执行此操作,你忘记映射 PollOptionPollOptionViewModel:

config.CreateMap<PollOption , PollOptionViewModel>().ReverseMap()
Run Code Online (Sandbox Code Playgroud)

并改变

public List<PollOptionViewModel> Options { get; set; }
Run Code Online (Sandbox Code Playgroud)

public ICollection<PollOptionViewModel> Options { get; set; }
Run Code Online (Sandbox Code Playgroud)

还要添加 ReverseMap()你的地图:

config.CreateMap<Poll, EditPollViewModel>().ReverseMap()
Run Code Online (Sandbox Code Playgroud)