修复“ LINQ表达式无法翻译”的规则

时间:2020-07-16 18:19:02

标签: c# entity-framework linq entity-framework-core ef-core-3.1

我正在升级应用程序以使用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个查询。
我了解,对于每个查询,我可以:

  • 翻译查询
  • 使用.AsEnumerable / .ToList等使查询在客户端运行

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

是否存在有关可以/不能翻译哪些内容的规则列表? (我正在构想MSDN上的参考指南)
当前,我的方法是以各种方式更改查询,直到它起作用为止,或者我放弃并添加.AsEnumerable
我希望能够检查查询并确定要执行的操作,而不必使用反复试验(或必须在Stack Overflow上询问80个问题!)

1 个答案:

答案 0 :(得分:0)

从光明的一面看! ☀

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

对所有.AsEnumerable()进行处理,并将80个案例添加到您的待办事项列表中,从[最慢|访问最多|影响最大]查询开始,系统地进行工作。

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

打猎愉快!