【发布时间】:2014-09-05 13:27:50
【问题描述】:
我在Entity Framwork 中加入了两个对象,并将所有条件放在Where 子句中。但是我的老板说将所有其他条件放在Where 谓词中会更有效。如下,第一个是我的版本-
var query = from ct in dbContext.ClaimTrackings
join cts in dbContext.ClaimTrackingStatus
on ct.ID equals cts.ClaimTrackingID
where ct.CenterID == centerID && ct.ClaimMonth == SharePointClaimProcessingData.ClaimMonth && ct.ClaimYear == SharePointClaimProcessingData.ClaimYear
select cts;
var query = from ct in dbContext.ClaimTrackings.Where(p => p.CenterID == centerID && p.ClaimMonth == SharePointClaimProcessingData.ClaimMonth && p.ClaimYear == SharePointClaimProcessingData.ClaimYear)
join cts in dbContext.ClaimTrackingStatus
on ct.ID equals cts.ClaimTrackingID
select cts;
我看不到生成的脚本,因为此代码只能在生产环境中运行。 我不确定哪个更有效。所以请解释一下。
【问题讨论】:
-
看起来它们可能会生成相同或等效的 SQL 语句 - 您是否检查过运行这些查询时生成的 SQL 语句?枚举之前发生的任何事情都将被转换为单个存储表达式,因此很可能由于这些返回相同的结果,查询/计划将是相同的。我可以为您尝试一组类似的联接
-
查看我更新的帖子,由于某些限制,我无法在本地运行它。
-
也许我可以创建一个示例项目并在我有时间的时候运行它。但我也想听听一些专家的意见。
标签: sql sql-server-2012 entity-framework-6