我已经浏览了网页,我无法弄清楚为什么在Automapper 6.2.1中我遇到了这些问题。我have查看了through多个tutorials,guides和answers并且没有任何结果。
我收到此错误:
找到未映射的成员。查看以下类型和成员。
未映射的属性:
标题
字幕
ProductType
语言
描述
但是我已经为这些属性创建了映射。我不知道为什么我会遇到这个问题。
我创建了一个AutoMapperConfig
类,其设置如下:
public class AutoMapperConfig
{
public static void Initialize()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Shop, SearchViewModel>()
.ForMember(x => x.Title, opts => opts.MapFrom(x => x.TITLE))
.ForMember(x => x.Subtitle, opts => opts.MapFrom(x => x.SUB_TITLE))
.ForMember(x => x.ProductType, opts => opts.MapFrom(x => x.PRODUCT_TYPE))
.ForMember(x => x.Language, opts => opts.MapFrom(x => x.PRODUCT_LANGUAGE))
.ForMember(x => x.Description, opts => opts.MapFrom(x => x.BRIEF_DESC));
});
}
然后在Global.asax
方法的Application_Start()
中我有这一行:
AutoMapperConfig.Initialize();
我试图在我的控制器中使用这个:
var searchResults = Mapper.Map<List<Shop>, SearchViewModel>(shopList);
在我点击该行之后会抛出该异常。我不确定为什么,因为我为所有这些属性创建了地图。
答案 0 :(得分:2)
这就是我在我的一个项目中设置AutoMapper
的方法(根据您的示例量身定制)。我在同一个类中使用静态类和静态IMapper
属性。
public static class AutoMapperConfig
{
public static IMapper EntityMapper { get; set; }
static EntityMap()
{
EntityMapper = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Shop, SearchViewModel>()
.ForMember(x => x.Title, opts => opts.MapFrom(x => x.TITLE))
.ForMember(x => x.Subtitle, opts => opts.MapFrom(x => x.SUB_TITLE))
.ForMember(x => x.ProductType, opts => opts.MapFrom(x => x.PRODUCT_TYPE))
.ForMember(x => x.Language, opts => opts.MapFrom(x => x.PRODUCT_LANGUAGE))
.ForMember(x => x.Description, opts => opts.MapFrom(x => x.BRIEF_DESC));
});
}
}
您可以这样称呼它:
EntityMap.EntityMapper.Map<List<Shop>, SearchViewModel>(shopList);
答案 1 :(得分:1)
searchResults
的数据类型错误。
为避免将来出现此错误,请使用显式数据类型声明变量。以下内容永远不会编译:
List<SearchViewModel> searchResults = Mapper.Map<List<Shop>, SearchViewModel>(shopList);
请改为尝试:
List<SearchViewModel> searchResults = Mapper.Map<List<Shop>, List<SearchViewModel>>(shopList);