Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql LINQPad-无法理解生成的查询_Sql_Sql Server_Linq_Entity Framework_Linqpad - Fatal编程技术网

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

Sql LINQPad-无法理解生成的查询,sql,sql-server,linq,entity-framework,linqpad,Sql,Sql Server,Linq,Entity Framework,Linqpad,我在LINQPad中键入以下LINQ,并使用dbcontext连接到我的数据库SQLServer2005 from j in Jobs where j.dValuationDate.HasValue && j.dValuationDate.Value > EntityFunctions.AddDays(DateTime.Now, -7).Value && j.dValuationDate.Value < EntityFunctions.AddHours

我在LINQPad中键入以下LINQ,并使用dbcontext连接到我的数据库SQLServer2005

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
注意没有where子句。我不明白LINQPad为什么会生成这样的查询。我做错了什么

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

您得到了!估价延迟代替了!j、 估值延迟


看起来这会导致EF从数据库中加载所有赋值延迟,并在内存中处理整个语句。我无法解释为什么没有对作业记录上的谓词进行查询,但至少您现在需要纠正一些问题。

SQL中的select语句完全搞乱了。它应该只选择iJobID…opun进一步检查,这两个语句根本不匹配。选择错误,并且From不是同一个表!请尝试再次运行Linq查询,并确保它更新的SQL resultValuationDelays不是作业表的一部分。这是一张单独的桌子,就像乔布斯一样。我想在这里写一个notexists子句。italic_不存在从估值延迟中选择1,其中iJobID=j.iJobID和iStatusID=5_italic对不起,我明白你在这里说的。我应该通过jobs外键j.ValuationDelays来引用它,而不是直接引用ValuationDelays。我会检查并接受答案或回复。好的,这样就行了。我现在也不需要x.iJobId==j.iJobId。缩写版本是:从作业中的j开始,其中j.dValuationDate.HasValue&&j.dValuationDate.Value>EntityFunctions.AddDaysDateTime.Now,-7.Value&&j.dValuationDate.Valuex.iStatusID==5选择j.iJobID
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]