首页 > 解决方案 > 修复“无法翻译 LINQ 表达式”的规则

问题描述

我正在升级应用程序以使用 EF Core 3.1。

我得到了错误The LINQ expression could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation

我的代码中有大约 80 个查询。
我了解,对于每个查询,我可以:

我想翻译尽可能多的查询。

是否有关于什么可以/不能翻译的规则列表?(我在想象 MSDN 上的参考指南)
目前,我的方法是通过各种方式更改查询,直到它起作用,或者我放弃并添加.AsEnumerable.
我希望能够检查查询并确定要做什么,而不是不得不使用试错法(或者不得不在 Stack Overflow 上问 80 个问题!)

标签: c#entity-frameworklinqentity-framework-coreef-core-3.1

解决方案


从光明的一面看!☀

多亏了 EF Core 3.1,您发现了 80 个以前由客户端评估且速度较慢的查询。

跟踪.AsEnumerable()所有这些并将 80 个案例添加到您的积压工作中,从 [最慢|访问最多|影响最大] 查询开始有条不紊地工作。

根据经验,大多数东西都不会翻译。将不会在此处翻译的查询作为单独的问题发布,我们很乐意帮助您进行优化。

狩猎愉快!


推荐阅读