我正在使用最新版本的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);
我收到了这个错误:
缺少类型映射配置或不支持的映射。
映射类型:PollOption - &gt; PollOptionViewModel
PollOption - &gt;
PollOptionViewModel
答案 0 :(得分:5)
您不需要具有相同名称的地图成员,例如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()