在自动映射器中为IEnumerable到IEnumerable / List创建映射

问题描述 投票:1回答:1

我在收藏时遇到了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; }
}.

我已经尝试过类似下面的操作,但是Team字符串不为空。我相信我必须指定映射。但是我是自动映射的新手,我无法弄清楚。

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

这里是Response

c# api asp.net-core asp.net-web-api automapper
1个回答
0
投票

我的猜测是您尚未在任何地方指定如何映射课程。

在您的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));
        }
    }

在此示例中,我在您的Team对象中假定了属性“ Name”。

并且在启动类中,您应该在AutoMapper配置中注册您的配置文件。

© www.soinside.com 2019 - 2024. All rights reserved.