我已经确定在执行以下表达式时:
int aNum = 52;
var myArtifacts = mydbcontext.artifacts.Where(a => a.ParentID == aNum ).ToList();
Run Code Online (Sandbox Code Playgroud)
在mysql上执行的查询是:
SELECT
`Extent1`.`ID`,
`Extent1`.`ParentID`
FROM `artifacts` AS `Extent1`
WHERE ((`Extent1`.`ParentID` = 52) AND (52 IS NOT NULL));
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么添加这个最后的额外条件?
AND(52不是空))
查询是:
var query =
from stokHareket1 in ce.StokHarekets
from stokHareket2 in ce.StokHarekets
join stok in ce.Stoks on stokHareket1.StokId equals stok.Id
where (
stokHareket1.StokId == stokHareket2.StokId
)
select new
{
result = stokHareket1.StokId
};
Run Code Online (Sandbox Code Playgroud)
在第一个项目中,EF版本是:5.0.0,第二个项目是6.1.3
它给出了第一个项目:
SELECT
[Extent1].[StokId] AS [StokId]
FROM [dbo].[StokHareket] AS [Extent1]
INNER JOIN [dbo].[StokHareket] AS [Extent2] ON [Extent1].[StokId] = [Extent2].[StokId]
WHERE [Extent1].[StokId] IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
在第二个:
SELECT
[Extent1].[StokId] AS [StokId]
FROM [dbo].[StokHareket] AS [Extent1]
INNER JOIN [dbo].[StokHareket] AS [Extent2] ON ([Extent1].[StokId] = [Extent2].[StokId])
/*THIS LINE*/OR …Run Code Online (Sandbox Code Playgroud)