gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:34:35 26 4
gpt4 key购买 nike

尝试使用 AutoMapper 将实体解析为 View 模型时,我不断收到异常,但我不明白为什么。

下面的代码

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 中的可查询扩展不支持 ValueResolvers:

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

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

很多时候我尽量不让 AutoMapper 只处理格式问题,如果那是您的解析器正在做的事情。我宁愿在 View/Serializer 层处理,那里的扩展点要深得多。

关于c# - AutoMapper IQueryable 扩展是否仍适用于 EF 6.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com