繁体   English   中英

AutoMapper IQueryable扩展是否仍适用于EF 6.1?

[英]Do AutoMapper IQueryable extensions still work with EF 6.1?

在尝试使用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();

始终导致异常,并显示消息“无法将此解析为可查询表达式”。 我该如何解决这个问题?

编辑:这似乎不是.Project()。To(),如果我删除上述代码中的ValueResolvers,AutoMapper会做它的事情。 奇怪的是,如果我坚持使用DateResolver,AutoMapper永远不会进入ResolveCore方法,而是抛出相同的异常。

AutoMapper中的Queryable Extensions不支持ValueResolvers:

https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions#supported-mapping-options

您可以使用MapFrom或自定义类型转换。 哪些操作取决于您的解析器的功能,但请记住,您只能执行LINQ提供程序能够处理的内容。

很多时候我尝试不让AutoMapper处理格式化问题,如果那是你的解析器正在做的事情。 我宁愿在View / Serializer层处理,扩展点在那里更深。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM