LINQ何时优于ado.net

LINQ何时优于ado.net,linq,ado.net,Linq,Ado.net,我们知道linq是一个构建在ado.net堆栈顶部的层。这是一个非常好的特性,使数据库查询变得更好,但linq是一个附加层,因此将linq查询转换为sql查询并映射回结果会增加一些开销,而在ado.net中,我们直接编写sql查询 我的问题是什么时候linq的性能比使用普通ado.net方法快。用原始SQL编写所有这些查询和管理所有其他翻译等节省的时间允许您花更多时间查找性能瓶颈 LINQ并不是要超越SQL。它是关于使代码更简单、更清晰,以便您可以专注于更重要的方面。有时,查询的自然LINQ表达

我们知道linq是一个构建在ado.net堆栈顶部的层。这是一个非常好的特性,使数据库查询变得更好,但linq是一个附加层,因此将linq查询转换为sql查询并映射回结果会增加一些开销,而在ado.net中,我们直接编写sql查询


我的问题是什么时候linq的性能比使用普通ado.net方法快。

用原始SQL编写所有这些查询和管理所有其他翻译等节省的时间允许您花更多时间查找性能瓶颈


LINQ并不是要超越SQL。它是关于使代码更简单、更清晰,以便您可以专注于更重要的方面。有时,查询的自然LINQ表达式可能会以比您自己更快的SQL结束—尽管有时也会出现相反的情况。您仍然应该查看正在生成的SQL,并对其进行相应的分析。

您将始终能够使用从ADO访问的存储过程将LINQ备份到db,然后直接执行操作,或者(如果您必须处理对象)使用手头任务所需的数据量构造对象

然而,LINQ允许我们非常快速地创建一个查询,通过返回匿名对象,该查询只返回该任务所需的信息

要对每个查询的自定义代码执行相同的操作,就需要在其他层不停止处理ADO(在许多方面存在问题)和/或创建大量复制其大部分功能但不共享代码的对象

因此,虽然在性能上可以击败它,但在这种情况下,如果没有大量重复的代码,就无法击败它。在性能上,它可以击败更自然的方法(返回实体对象时使用我们不会使用的膨胀)


最后,即使在没有成功的情况下,它仍然可以更快地编写,并且操作与实体的定义方式有关(这是我非常喜欢的主要原因)。

当程序员不知道ado.net的复杂性时:)+1:并不总是关于更高效的代码。这是关于什么对企业更有效率的问题。减少几个时钟周期同时节省大量开发人员时间是LINQ通常“优于”ADO.NET的一种方式。(不总是,但经常)谢谢你的提示,但这并不能回答我的问题,我真的在寻找一个linq比ado表现更好的例子。net@Microgen:比您可能编写的经过高度调整和优化的普通ADO.NET代码更好,时间不是任何因素?很可能没有这种情况——但这在现实中并不重要。