无法使用Automapper ForMember方法映射具有不同名称的字段

时间:2016-11-25 05:46:38

标签: c# lambda automapper

我希望将名为PortalUser的实体映射到另一个名为UserFacade的实体,它们都有相同的字段,除了一个,因为两个类中字段的名称都不同。

经过一些谷歌搜索后,我发现了一种方法,可以按照此处的说明url

将不同名称的字段映射到彼此

解决方案是使用ForMember函数并明确定义要映射的字段,如上面问题的答案中所述。

我的问题是,ForMember并未正常工作,几乎在stackoverflow的每个答案都有解释

AutoMapper.Mapper.CreateMap(user.GetType(), typeof(UserFacade))
    .ForMember(dest => dest.PortalRole, opt => opt.MapFrom(src => src.Role);

var userFacade = AutoMapper.Mapper.Map<UserFacade>(user);

ForMember的第二行表示无法将lambda转换为字符串类型。 在stackoverflow的几乎每个答案中,ForMember函数的使用方式相同,但它似乎无法在这里工作,请提供帮助。

2 个答案:

答案 0 :(得分:0)

尝试如下:

AutoMapper.Mapper.CreateMap(user.GetType(), typeof(UserFacade))
    .ForMember(dest => dest.PortalRole, opt => opt.MapFrom(src => src.Role));

您也可以确认,这是添加到命名空间:

    using System.Linq;

答案 1 :(得分:0)

当我看到这个。我认为有三个可能的原因:

1)问题中的错字:

AutoMapper.Mapper.CreateMap(user.GetType(), typeof(UserFacade))
    .ForMember(dest => dest.PortalRole, opt => opt.MapFrom(src => src.Role));

2)使用

using AutoMapper;
using System.Linq;

3)没有用于PortalRole角色的映射器。