我正在升级应用程序以使用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个问题!)
答案 0 :(得分:0)
从光明的一面看! ☀
借助EF Core 3.1,您发现了80个先前由客户端评估且速度较慢的查询。
对所有.AsEnumerable()
进行处理,并将80个案例添加到您的待办事项列表中,从[最慢|访问最多|影响最大]查询开始,系统地进行工作。
根据经验,大多数事情都不会翻译。将不会在此处翻译为单独问题的查询发布出来,我们很乐意帮助您进行优化。
打猎愉快!