用计算值创建AutoMapper映射

本文关键字:AutoMapper 映射 创建 计算 | 更新日期: 2023-09-27 18:06:09

我试图配置一个简单的AutoMapper映射从实体框架实体到视图模型对象。它大部分工作,但在视图模型中,我有一个int字段来保存计数。该字段在源实体中不存在。

cfg.CreateMap<Feed, FeedVM>()
   .ForMember(dest => dest.Count, opt => opt.MapFrom(src => src.Orders.Count()));

当我检查映射的有效性时,我得到以下错误消息:

不能映射Feed上的以下属性:

添加自定义映射表达式、忽略、添加自定义解析器或修改目标类型Feed。背景:从FeedVM类型映射到Feed

如果我正确理解Automapper语法,我是从Feed映射到FeedVM,但错误消息似乎表明我是从FeedVM映射到Feed。

我应该做些什么来将值42映射到FeedVM中的Count字段?

用计算值创建AutoMapper映射

您应该使用ResolveUsing:

cfg.CreateMap<Feed, FeedVM>()
   .ForMember(dest => dest.Count, opt => opt.ResolveUsing(src => src.Orders.Count()));
更新

John在下面的评论中指出映射是正确的,问题在于另一个与Feed相关的实体的映射。在那个实体中,他正在映射两个方向。