首页 > 解决方案 > 在 automapper 中创建 IEnumerable 到 IEnumerable /List 的映射

问题描述

当我有收藏时,我遇到了 Automapper 的问题。下面是我的情况

商业模式

 public class Member
    {
        public int MemberId { get; set; }
        public int TeamID { get; set; }
        public Team Team { get; set; }
    }

我想从控制器返回以下模型

public class Member
{
    public int MemberId { get; set; }
    public string Team { get; set; }
    public int TeamId { get; set; }
}.

我已经尝试过类似下面的内容,但团队字符串仍然为空。我相信我必须指定映射。但我是自动映射器的新手,我无法弄清楚。

 IEnumerable<Models.Member> ienumerableDest = _mapper.Map<IEnumerable<Entities.Member>, List<Models.Member>>(members);

这是响应

标签: c#apiasp.net-coreasp.net-web-apiautomapper

解决方案


我的猜测是你没有在任何地方指定如何映射你的类。

在您的 Entities.Member 类中,您有一个 Team 类型的 Team 属性,但您试图将其映射到字符串,所以它失败了。

在您的配置中,添加一个指定此映射的配置文件,如下所示:

 public class AppProfile : Profile
    {
        public AppProfile()
        {
            CreateMap<Entities.Member, Model.Member>(MemberList.Destination)
                .ForMember(d => d.Team, opt => opt.MapFrom(src => src.Team.Name));
        }
    }

在此示例中,我假设您的团队对象中有一个属性“名称”。

在您的启动课程中,您应该在 AutoMapper 配置中注册您的个人资料。


推荐阅读