【问题标题】:Linq-to-Entities/Linq-to-SQL, Is One Data Polling Method More Efficient?Linq-to-Entities/Linq-to-SQL,一种数据轮询方式更高效吗?
【发布时间】:2010-11-29 21:20:34
【问题描述】:

以下两个示例是否不同,如果不同,哪个更有效?

var user = (from u in db.Users where u.Id == userId select u).Single();

var user = db.Users.Single(p => p.Id == userId);

【问题讨论】:

  • 从数据上下文中管道调试信息并查看生成了哪些查询
  • Sql Profiler 通常可以帮助解决此类问题。 ))

标签: c# linq linq-to-sql linq-to-entities


【解决方案1】:

它们在功能上是等效的。它们在各种 LINQ 提供程序中的实现方式可能略有不同,但我希望性能几乎完全相同。例如,LINQ to SQL 提供程序为两个查询生成完全相同的 SQL:

SELECT [t0].[Id], [t0].[Name]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Id] = @p0

我希望这同样适用于实体框架。

如果我必须选择一个,我会选择第二个版本,因为它更简洁且清晰。事实上,我会说它更清晰 - 关键字噪音更少,因此业务逻辑更加突出。

【讨论】:

    【解决方案2】:

    它们最终会是相同的(SQL 和效率方面)。

    【讨论】:

      【解决方案3】:

      它们是一样的。编译器应该为两种 LINQ 语法产生相同的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多