从 dotnet Core 2.2.6 更改为 3.0.0 后出现 EF Linq 错误

2023-11-26

我正在尝试将解决方案升级到新的 Core Framework 3.0.0。 现在我有一个小问题我不明白。

看一下,这个方法在2.2.6中是没有问题的:

public async Task<IEnumerable<ApplicationUser>> GetBirthdayUsersCurrentMonth()
    {
        return await ApplicationDbContext.Users
            .Where(x => x.Gender != ApplicationUser.GenderTypes.generic)
            .Where(x => x.BirthDate.GetValueOrDefault().Month == DateTime.Now.Month)
            .Where(x => x.RetireDate == null)
            .OrderBy(x => x.BirthDate.GetValueOrDefault())
            .ToListAsync();
    }

现在在 3.0.0 中我收到一个 Linq 错误,内容如下:

InvalidOperationException:LINQ 表达式 'Where( 源:Where( 源:DbSet,谓词:(a) => (int)a.Gender != 0),谓词:(a) => a.BirthDate.GetValueOrDefault().Month == DateTime.Now.Month)' 无法翻译。以可翻译的形式重写查询,或者通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用来显式切换到客户端计算

当我禁用此行时:

.Where(x => x.BirthDate.GetValueOrDefault().Month == DateTime.Now.Month)

错误消失了,但我当然得到了所有用户。我在这个查询中看不到错误。 这可能是 EF Core 3.0.0 中的一个错误吗?


原因是 EF Core 3 中已禁用隐式客户端评估。

这意味着以前,您的代码没有在服务器上执行 WHERE 子句。相反,EF 将所有行加载到内存中并计算内存中的表达式。

要在升级后解决此问题,首先需要弄清楚 EF 到底无法转换为 SQL 的是什么。我的猜测是打电话给GetValueOrDefault(),因此尝试这样重写:

.Where(x => x.BirthDate != null && x.BirthDate.Value.Month == DateTime.Now.Month)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 dotnet Core 2.2.6 更改为 3.0.0 后出现 EF Linq 错误 的相关文章

随机推荐

  • 如何使用 Python 在 OpenCV 中裁剪图像

    如何使用 OpenCV 裁剪图像 就像我之前在 PIL 中所做的那样 PIL 上的工作示例 im Image open 0 png convert L im im crop 1 1 98 33 im save 0 png 但是我如何在 Op
  • 获取java类的编译时间戳

    是否可以可靠地确定本地运行的 Java 应用程序以及作为小程序和 或 JNLP Web 应用程序运行的给定类的编译时间戳 根据 Java 虚拟机规范 类文件格式不需要任何类型的时间戳 因此您最好检查包含该类的 Class 或 Jar 文件的
  • 如何修剪前导和尾随空白?

    我在处理 data frame 中的前导和尾随空格时遇到一些问题 例如 我查看一个特定的row in a data frame基于某种条件 gt myDummy myDummy country c Austria c 1 2 3 7 19
  • 使用 xUnit 处理 netstandard1.6

    我希望使用 netstandard1 6 库的测试框架 我尝试关注并编辑xUnit net 入门 NET Core ASP NET Core 没有成功 按照 xUnit 的教程 使用 VS 2015 Update 3 RTM 上的 dotn
  • 使用spel访问spring注释中的静态变量

    我在注释中有一个值 我想为其分配一个静态变量 我尝试过这样的事情 Cacheable value com test App VALUE public List someCachableMethod 尝试此操作后 仍然出现相同的异常 找不到字
  • Android Facebook 意图

    我正在使用此代码在 Facebook 上发布 但它不适用于官方 Facebook 应用程序 因为它尝试作为链接发送 有没有办法解决 Intent s new Intent android content Intent ACTION SEND
  • Android:添加一个简单的片段

    我对 Android 应用程序还很陌生 所以我希望能在这里找到一些帮助 我已经在这里搜索了我的问题并找到了一些东西 但这不起作用 我想将 Fragment 添加到 FrameLayout 但它不起作用 我的目标是创建一个始终存在的框架 框架
  • 在 ggplot x 轴上显示所有日期值 - R

    在下面的小数据集中 我想在 x 轴上绘制日期值 我希望标记数据框中存在的所有日期刻度 目前它只标记 3 个随机刻度 我可以将该列更改为一个因子 但将其作为日期意味着 x 轴根据点之间的时间间隔进行间隔 到目前为止 我能找到的唯一答案是想要每
  • Python正则表达式匹配字符串末尾的标点符号

    我需要在Python中匹配一个句子是否以大写开头并以 结尾 EDIT它必须有 only at end 但允许在句子中使用其他标点符号 import re s This sentence is correct This sentence is
  • python 有 soundex 函数吗?

    python 是否有 soundex 函数 如果没有 你将如何编写 soundex 代码 Soundex Code Letters 1 B F P V 2 C G J K Q S X Z 3 D T 4 L 5 M N 6 R SKIP A
  • Objective C - 静态和全局变量?

    在名为 Ad 的类的 m 文件中 我有 3 个静态字符串 static NSString AdStateDisabled disable static NSString AdStateExpired expired static NSStr
  • 构建oozie:未知主机repository.codehaus.org

    我正在尝试构建从此处下载的 Oozie 4 2 0 http ftp cixug es apache oozie 4 2 0 oozie 4 2 0 tar gz 启动构建后 bin mkdistro sh DskipTests 我收到此错
  • 适用于作业服务器的 Amazon Auto Scaling API

    我已经阅读了几乎整个文档 甚至超出了 AWS AS API 的范围 以了解所有 AS 内容 然而 我仍然想知道 尚未实际使用 API 因为我想先从某人那里找到这一点 我的场景是否适用于 AS 假设我在一个 AS 组内设置了一堆工作服务器 每
  • 如何抑制 Python 日志记录模块中的换行符。 [复制]

    这个问题在这里已经有答案了 我想在执行 log info msg 操作时取消换行符 当我们 打印 它时 print msg 所以我需要像 coma 这样的东西来记录 我播下这个问题在 Python 日志记录模块中禁止换行但有人可以给我参考或
  • 使用 React 从 Babel 迁移到 SWC

    TL DR 如何翻译这样的节点脚本 test NODE ENV test riteway r babel register src test js tap nirvana to use SWC而不是巴别塔 Context 我们最近升级了 N
  • 如何检查另一个窗口中是否有打开的 URL?

    这是我上一个问题的后续如果窗口尚不存在 则打开一个窗口本质上 我现在保留一个页面已打开的所有窗口引用的列表 并且仅允许它们尚未打开时打开 然后一个潜在的问题引起了我的注意 用户当然有可能关闭原始窗口 然后再次打开它 从而丢失窗口引用列表 是
  • Qt5.6:高DPI支持和OpenGL(OpenSceneGraph)

    我有一个最小的应用程序 它使用QOpenGLWidget集成了 OpenGL 包装库 OpenSceneGraph 我试图弄清楚在处理我使用的 OpenGL 内容时如何正确使用 Qt5 6 对高 DPI 屏幕的支持 My main 函数有以
  • Vite + ESBuild错误:没有为“.node”文件配置加载器:node_modules/fsevents/fsevents.node

    我对 ReactJS 和 Vite 很陌生 我正在编写一些教程 突然开始出现以下错误 我尝试重新安装node modules但没有成功 错误 没有为 node 文件配置加载程序 node modules fsevents fsevents
  • Spring @Transactional 注释不能与自动装配一起使用?

    我的应用程序使用 Spring 自动装配来配置 bean 我刚刚尝试添加 Transactional 预期的代理似乎没有被调用 我希望 PersonalController 使用事务代理包装的 UpdatePublicMapService
  • 从 dotnet Core 2.2.6 更改为 3.0.0 后出现 EF Linq 错误

    我正在尝试将解决方案升级到新的 Core Framework 3 0 0 现在我有一个小问题我不明白 看一下 这个方法在2 2 6中是没有问题的 public async Task