在尝试使用AutoMapper将实体解析为视图模型时,我一直收到异常,但我无法弄清楚原因。
以下代码
Mapper.CreateMap<Article, ArticleViewModel>()
.ForMember(a => a.CreatedDate, a => a.ResolveUsing<DateResolver>())
.ForMember(a => a.Content, a => a.ResolveUsing<ContentResolver>().ConstructedBy(() =>
new ContentResolver(articleParserFactory)));
var test = this.context.Articles
.Project()
.To<ArticleViewModel>()
.ToArray();
始终导致带有消息的异常&#34;无法将此解析为可查询表达式&#34;。我该如何解决这个问题?
编辑:这似乎不是.Project()的问题.To(),如果我删除上面代码中的ValueResolvers,AutoMapper会做它的事情。奇怪的是,如果我坚持使用DateResolver,AutoMapper永远不会进入ResolveCore方法,而是抛出相同的异常。答案 0 :(得分:3)
AutoMapper中的Queryable Extensions不支持ValueResolvers:
https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions#supported-mapping-options
您可以改用MapFrom或自定义类型转换。哪些操作取决于您的解析器的功能,但请记住,您只能执行LINQ提供程序能够处理的内容。
很多时候,我尝试不让AutoMapper处理格式化问题,如果那是你的解析器正在做的事情。我宁愿在View / Serializer层处理,扩展点在那里更深。