我希望将名为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函数的使用方式相同,但它似乎无法在这里工作,请提供帮助。
答案 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角色的映射器。