c# - 实体核心 2.0.3 异常 : must be reducible node

标签 c# entity-framework entity-framework-core ef-core-2.0

我正在尝试将以下 sql 查询转换为 EF

SQL查询

Select  Sum([KiloWatt]) as 'Sum',
    Min([KiloWatt]) as 'Min',
    Max([KiloWatt]) as 'Max',
    Sum([KiloWatt])/COUNT([KiloWatt]) as 'Average',
    CONVERT(date, [DateTime]) 
from OneHourElectricitys 
where [DateTime] < SYSDATETIME()
group by CONVERT(date, [DateTime])

EF代码

var analytics = await _analyticsRepository.Query().Where(x => x.DateTime.Subtract(DateTime.Today).Days < 0)
                                                  .GroupBy(x => x.DateTime.Date)
                                                  .Select(x => new 
                                                    { DateTime = x.Key, 
                                                      Max = x.Max(y => y.KiloWatt),
                                                      Min = x.Min(y => y.KiloWatt),
                                                      Avg = x.Sum(y => y.KiloWatt)/ x.Count(),
                                                      Sum = x.Sum(y => y.KiloWatt)
                                                    })
                                                  .ToListAsync();

堆栈跟踪:-

System.ArgumentException: must be reducible node at System.Linq.Expressions.Expression.ReduceAndCheck() at System.Linq.Expressions.Expression.ReduceExtensions()

我做错了吗?

-- 更新--

以下 2 个 EF 查询运行良好,但组合它们会出现错误。

var analytics = await _analyticsRepository.Query().Where(x => x.DateTime.Subtract(DateTime.Today).Days < 0)

var analytics = await _analyticsRepository.Query().GroupBy(x => x.DateTime.Date)
                                              .Select(x => new 
                                                { DateTime = x.Key, 
                                                  Max = x.Max(y => y.KiloWatt),
                                                  Min = x.Min(y => y.KiloWatt),
                                                  Avg = x.Sum(y => y.KiloWatt)/ x.Count(),
                                                  Sum = x.Sum(y => y.KiloWatt)
                                                })
                                              .ToListAsync();

最佳答案

如 Ivan Stoev 所述,此问题的正确解决方案是升级到 EF Core 2.1.3

关于c# - 实体核心 2.0.3 异常 : must be reducible node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464855/

相关文章:

entity-framework-core - EF Core 诊断 - 每个上下文实例的查询计数

c# - 如何为 ListviewSubItem 设置工具提示

c# - Prism 程序集引用失败 : System. Windows.Interactivity

c# - 将聚合函数作为参数传递

entity-framework - 通过 Entity Framework 添加 "Product"的3种方法。有什么不同?

c# - Entity Framework 依赖注入(inject)

c# - LINQ 是否有类似 Match 的语法

asp.net - 无法在主机上使用 MySQL 连接

c# - EntityFramework、DbContextScope 和 Effort - 异常 : DbContext has been disposed inside unit test

asp.net-core - 在 Google OAuth 流程中访问 EF DbContext