Wou*_*pen 5 linq sql-server entity-framework-core
我正在使用 SQL Server 和 Entity Framework Core 2。我有以下 SQL 查询(在 SQL Server Management Studio 中)正确地为我提供了前一小时添加的度量(到度量表):
SELECT id, [timestamp]
FROM measurement
WHERE
dateADD(MINUTE, 60, [timestamp]) > getdate()
Run Code Online (Sandbox Code Playgroud)
这很好用。但是现在我想使用 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();
Run Code Online (Sandbox Code Playgroud)
但这有以下缺点:
如何在 EF Core 中表达查询,使其可以完全转换为 SQL?
DateTime.Now.AddHours(-1) 完美转换为 EF Core 5.0.8 中的 DATEADD(hour, -1.0E0, GETDATE())。
(请注意,我转载了 Ivan Stoev 的评论,因为它回答了我的类似问题。)