给出一个简单的LINQ到EF(EF5)声明:我可以避免一个简单的Linq to Entities投影的嵌套SQL查询吗?
MyDBSet.Select(x => x.Column1)
下面的SQL将制作:
SELECT
[c].[Column1] AS [Column1]
FROM (SELECT
[MyDBSet].[Column1] AS [Column1],
[MyDBSet].[Column2] AS [Column2],
...
[MyDBSet].[ColumnN] AS [ColumnN]
FROM [dbo].[MyDBSet] as [MyDBSet]) as [c]
这将返回所有列额外的嵌套查询实际上是不必要的。这可能是无害的,但我认为我遇到的问题是如何扩展到相当复杂的查询中。所以:有没有这种额外的嵌套查询让EF生成SQL的方法?我的linq语句是用表达式树生成的,所以我想避免使用任何传递SQL。
为什么你需要?优化代码不是查询提供者的工作。数据库应该没有优化该查询的问题。 – Servy 2014-10-31 16:22:10
查看DBContext API中懒惰,渴望和显式加载作为在EF中创建SQL查询的不同方式。 – 2014-10-31 16:25:08
@Servy,你不能假定数据库会优化查询。我想他想创建更复杂的查询。 SQL是一种奇怪的生物 - 有时它会进行优化,而其他时候这种小的变化会影响性能。 – 2014-10-31 17:12:53