gpt4 book ai didi

sql - LINQPad - 无法理解生成的查询

转载 作者:行者123 更新时间:2023-12-04 22:40:21 24 4
gpt4 key购买 nike

我在 LINQPad 中输入了以下 LINQ,并使用 dbcontext 连接到我的数据库 (SQL Server 2005)。

from j in Jobs
where j.dValuationDate.HasValue && j.dValuationDate.Value > EntityFunctions.AddDays(DateTime.Now, -7).Value &&
j.dValuationDate.Value < EntityFunctions.AddHours(DateTime.Now, -1).Value &&
j.bXMLServiceProviderID.HasValue && j.bXMLServiceProviderID.Value == 1 &&
!ValuationDelays.Any(x => x.iJobID == j.iJobID && x.iStatusID == 5)
select j.iJobID

Jobs 和 ValuationDelays 是我的数据库中的表,由 iJobId 列链接。

LINQPad生成的SQL是:

SELECT 
[Extent1].[iDelayID] AS [iDelayID],
[Extent1].[iJobID] AS [iJobID],
[Extent1].[sReasonforDelay] AS [sReasonforDelay],
[Extent1].[dDateTime] AS [dDateTime],
[Extent1].[iStaffID] AS [iStaffID],
[Extent1].[iStatusID] AS [iStatusID],
[Extent1].[dSentDate] AS [dSentDate],
[Extent1].[yValExDelayReasonID] AS [yValExDelayReasonID],
[Extent1].[dDelayedUntilDate] AS [dDelayedUntilDate],
[Extent1].[dValuationDate] AS [dValuationDate],
[Extent1].[valexActionUpdateId] AS [valexActionUpdateId],
[Extent1].[valexAppointmentReasonId] AS [valexAppointmentReasonId]
FROM [dbo].[ValuationDelays] AS [Extent1]

请注意,没有 where 子句。我无法理解为什么 LINQPad 会生成这样的查询。我做错了什么?

当我在 VS 2010 中调试时,查询运行良好并以 C# 代码返回预期结果。

最佳答案

你有 !ValuationDelays 而不是 !j.ValuationDelays

看起来这会导致 EF 从数据库加载所有 ValuationDelay 并在内存中处理整个语句。我无法解释为什么没有对 Job 记录中的谓词的查询,但至少你现在有一些要更正的地方。

关于sql - LINQPad - 无法理解生成的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16956219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com