Linq to sql linq到sql vs ado.net-连接打开时的性能

Linq to sql linq到sql vs ado.net-连接打开时的性能,linq-to-sql,ado.net,Linq To Sql,Ado.net,我必须从一个表(大约40列)中获取记录,处理每条记录,调用该记录上的web服务,等待其响应并将记录更新到数据库 现在,我看到两种选择。 1.Linq到Sql 2.具有类型化数据集的ADO.Net (我可以选择DataReader来完成所有额外的工作。) 2在获取数据后立即关闭连接,我可以脱机处理数据并在以后提交更改,也就是说,我没有让连接保持打开这么长时间。对于1,为了能够在最后提交更改,我必须始终保持连接打开 您是否认为在经过一段时间的处理后需要提交更改时,2始终是最好的方法?或者我遗漏

我必须从一个表(大约40列)中获取记录,处理每条记录,调用该记录上的web服务,等待其响应并将记录更新到数据库

现在,我看到两种选择。
1.Linq到Sql
2.具有类型化数据集的ADO.Net
(我可以选择DataReader来完成所有额外的工作。)

2在获取数据后立即关闭连接,我可以脱机处理数据并在以后提交更改,也就是说,我没有让连接保持打开这么长时间。对于1,为了能够在最后提交更改,我必须始终保持连接打开


您是否认为在经过一段时间的处理后需要提交更改时,2始终是最好的方法?或者我遗漏了什么吗?

L2S或Entity Framework会带来一些开销,但老实说,您节省的时间是值得的,并且每当您对对象执行Linq查询时,SQL都会为您进行优化


简单的旧ADO.Net是老派的-Linq是现在的发展方向

在处理获取的对象时,Linq到SQL或实体框架都不会保持连接打开。如果希望利用各种上下文的更改跟踪功能,则需要将上下文对象保持在范围内,但这并不意味着在这段时间内与数据库的连接保持打开状态。实际上,只有在对结果进行迭代(数据绑定)和调用SubmitChanges/SaveChanges时,连接才会打开。否则,连接将关闭

这些技术在幕后使用ADO.Net数据读取器和命令对象。现在还没有像VB6时代那样的开放游标概念

简单的旧ADO.Net是老派的-Linq是现在的发展方向

微软迎合新手,并将自己作为“爱好者”语言卖给大众

LINQ允许开发人员查询没有业务访问数据源的数据源

拥有渊博的知识和足够的头脑来编写自己的优化T-SQL可能是一项令人向往的技能,而不是像“老派”那样可笑

作为一名软件工程师,一个人应该朝着编写能够尽可能高效和快速运行的软件的方向前进。选择更高级别的构造(因为它太容易实现)的整个“节省开发时间”论点说明,如果将程序放在高级工程师版本旁边,它的性能将是多么糟糕

不要被最新和最好的产品所吸引,因为这些产品会让编码变得“更快”。如果您足够聪明,可以自己动手,那么就不要让LINQ语法为您编写T-SQL

在商业世界中,有一种衡量规模的尺度,微秒很重要,对于一家公司来说,成为一种有价值的商品,当您的软件需要以您所知道的速度运行时,将考验您的深厚知识


简而言之,拥有深入的知识从来都不是过时的。

我并不担心生成sql和优化所涉及的开销。L2S和ADO.Net都给我类型化类列表中的数据,并为我处理更新和插入。我不知道我在这里节省了多少时间。我想分析的是连接在一段时间内是开放的还是不开放的?(我不确定连接打开时在后台到底发生了什么,消耗了多少资源,在sql server上的负载有多大。)L2S和L2E在后台为您使用SQLConnection,并在每次与DataContext交互时打开和关闭连接。您不需要管理打开和关闭连接对象。由于您可以使用干净的Linq语句检索域对象并立即开始使用它们的属性,因此编码也得到了简化—当您将数据保存回SQL Server时,无需创建对象并从数据集中填充它,反之亦然。一年前,我开始编程,出于无知,我使用ADO.NET。当我发现LINQ时,我非常高兴…@Nick Yeah,对于任何读过这篇文章的人来说,如果你没有尝试过LINQ,只要做一个教程,你就会被它的清洁程度所震惊;)使用SqlDataAdapter、sqlDataReader等让我很困惑。我再也不会回去了!我知道这很老了,但既然你还很活跃;我将在下面重申Jim的回答中提到的内容:L2S并没有按照您的建议保持您的连接打开。它在加载对象时立即关闭,在保存更改时重新打开。实体框架也做了同样的事情。哈哈,你也做了同样的事情。你也没有回帖子。我在边锋的位置上发疯了。因此他引用了关于旧学校的话。你自己听起来像个新手。而且,如果你能把2和2加在一起,我确实回答了这个问题。我说自己写T-SQL,这。。。把两根棍子搓在一起,推断出这意味着ADO。