我使用的是ASP。. NET CORE与实体框架核心,我试图过滤出的结果在一个特定的DATETIME框架。
这是我的DBContext查询:var device = await _context.Devices.Where(d => d.Id == id)
.Include(d => d.Layouts.Where(i => i.CreatedAt > fromDateTime && i.CreatedAt < toDateTime))
.ThenInclude(a => a.States)
.FirstOrDefaultAsync();
"CreatedAt"是在SQL Server的datetime格式,"fromDateTime"one_answers"toDateTime"也是datetime类型。
直接查询基本上是即时的:
SELECT * [Id]
,[CreatedAt]
FROM [Layout]
Where CreatedAt > '2022-07-03 00:00:00'
And CreatedAt < '2022-07-04 00:00:00'
但是从后台来看,它需要很长时间,我没有等到它完成,而是等待了20多分钟。
我需要帮助找到我做错了什么,或者我怎么能写查询更快。谢谢你。
添加AsSplitQuery(),您将拥有具有笛卡尔爆炸记录的Eager Loading。此外,您的SQL不是相同的查询,急切加载没有直接转换为SQL。- - - - - -Svyatoslav Danyliv7月4日9:11