linq to sql vs ado.net - 在连接打开方面的性能

时间:2011-03-23 22:20:36

标签: linq-to-sql ado.net

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

现在,我看到了两个选项。
1. Linq to Sql
2.带有类型化数据集的ADO.Net
(我将DataReader选项留给我必须完成的所有额外工作。)

2在获取数据后很快关闭连接,我可以离线处理数据并在以后提交更改,即我没有保持连接打开这么久。使用1,为了能够在最后提交更改,我必须始终保持连接打开。

您是否认为在经过一段时间的处理后需要提交更改或我遗漏某些内容时,2总是最好的方式?

3 个答案:

答案 0 :(得分:1)

L2S或实体框架引入了一些开销,但老实说,保存的时间非常值得,每当您对对象执行Linq查询时,SQL都会为您优化。

普通的旧ADO.Net是老派 - Linq是现在的路。

答案 1 :(得分:1)

在使用提取的对象时,Linq to SQL或Entity Framework都不会保持连接处于打开状态。如果要利用各种上下文的更改跟踪功能,则需要将上下文对象保留在范围内,但这并不意味着在此期间与数据库的连接仍保持打开状态。实际上,只有在迭代结果(数据绑定)和调用SubmitChanges / SaveChanges时才会打开连接。否则连接将关闭。

这些技术使用ADO.Net DataReaders和命令对象。仍然没有像你在VB6时代那样开放游标的概念。

答案 2 :(得分:0)

  

普通的旧ADO.Net是老派 - Linq是现在要走的路。

微软迎合了新手,并以“爱好者”语言向群众销售。

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

拥有足够的知识和足够的大脑来编写自己的优化T-SQL可能是一种可取的技能,而不是“老派”。

作为一名软件工程师,一个人应该朝着编写软件的方向前进,尽可能高效,快速地执行。选择更高级别构造的整个“节省开发时间”的论点因为它实现起来太简单,这说明如果在高级工程师版本旁边堆叠,程序将会有多糟糕。

不要出售使编码“更快”的最新和最好的产品。如果你足够聪明,可以自己动手,那么就自己动手,避免使用LINQ语法为你编写T-SQL。

商业世界中存在一定程度的缩放,其中微秒计数,并且当您的软件需要以您知道如何制作它的速度运行时,作为公司的宝贵商品将使您的深层知识得到测试。

简而言之,拥有深厚的知识永远不会过时。

相关问题