如何在EF Core和LINQ中表达GetDate()和DateAdd()方法?

时间:2019-04-04 18:14:54

标签: sql-server linq entity-framework-core

我正在使用SQL Server和Entity Framework Core2。我有以下SQL查询(在SQL Server Management Studio中)正确地为我提供了前一个小时(添加到度量值表)的度量值:

SELECT id, [timestamp] 
FROM measurement 
WHERE
  dateADD(MINUTE, 60, [timestamp]) > getdate()

这很好。但是现在我想使用EF Core 2在LINQ中编写此查询。 当然我可以编写以下代码:

dbContext
   .Measurement
   .Include(m => m.Section)
   .GroupBy(m => m.Section, (section, m) => new Section
    {
       Name = section.Name,
       CustomerId = section.CustomerId,
       MostRecentMeasurement = m.Max(z => z.Timestamp)
    })
   .Where(x => x.MostRecentMeasurement > DateTime.Now.AddHours(-1))
   .ToList();

但这有以下缺点:

  • DateTime。现在无法转换为SQL,因此将在性能不佳的客户端进行评估,
  • 客户端时区与数据库服务器时区不同,需要额外的复杂性和计算量。

如何在EF Core中表达查询,以便可以将其完全转换为SQL?

0 个答案:

没有答案