Pomelo EF Core必须是可简化的节点错误

时间:2019-11-21 15:08:12

标签: entity-framework asp.net-core .net-core entity-framework-core pomelo-entityframeworkcore-mysql

我不确定为什么会收到错误消息:“必须是可还原节点”

我尝试了此解决方案,但收到“必须还原的节点”错误。  我正在使用EF Core 2.2运行Core 2

    HttpClient client = vertx.createHttpClient();

    client.websocket(8080, "localhost", "/some-uri", websocket -> {
      websocket.handler(data -> {
        System.out.println("Received data " + data.toString("ISO-8859-1"));
        client.close();
      });
      websocket.writeBinaryMessage(Buffer.buffer("Hello world"));
    });

我正在使用的数据库提供程序是Pomelo.EntityFrameworkCore.MySql版本2.2.6

1 个答案:

答案 0 :(得分:0)

您的GroupyBy()表达式可能无法翻译。以下行不太可能起作用:

D = x.Closing.Value.TimeOfDay >= start ? x.Closing.Value.Day : x.Closing.Value.Day - 1

这里的问题是,SQL不允许在GROUP BY子句中使用条件逻辑。

您可以将条件逻辑放在select子句中的group by子句之前,然后仅将其结果分组:

var totals = await _unitOfWork.Additions.GetAll()
   .Where(x => x.FirmId == firm.FirmId &&
               x.State == false &&
               x.Closing >= opening &&
               x.Closing <= closing)
   .Select(x => new {
       Y = x.Closing.Value.Year,
       M = x.Closing.Value.Month,
       D = x.Closing.Value.TimeOfDay >= start ? x.Closing.Value.Day : x.Closing.Value.Day - 1
   })
   .GroupBy(x => new {
       Y = x.Y,
       M = x.M,
       D = x.D
   })
// ...

通常可以,但是在柚2.2.6中,DateTime.TimeOfDay没有翻译(尽管3.0.0支持),因此您需要比较日期的{{ 1}},HourMinute值,并带有Second(变量TimeSpan)的相应属性。