实践ADO.NetTeam相关学习

ADO.Net Team如何设置呢?要修改Connection Pool 唯一的方式就是通过设定ADO.Net Team来完成。此属性代表是否需要使用到连接池,默认为True,如果指定为False,不使用连接池。

创新互联是一家专注于成都网站设计、网站制作与策划设计,当阳网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:当阳等地区。当阳做网站价格咨询:18982081108

Pooling (true)When true, the connection is drawn from the appropriate pool, or if necessary, created and added to the appropriate pool.此属性代表是否需要使用到连接池,默认为True,如果指定为False,ADO.Net Team不使用连接池。

这个属性表示一个Connection的有效时间,如果一个Connection返回到ConnectionPool的时候,超过了ADO.Net Team时间,这个连接不会再次放到Connection。当下一个请求发来时,ADO.Net会新建一个Connection。

这个属性主要使用于群集的SQL数据库中,用于负载平衡。可能大家经常看到网络上有很多文档以及MSDN站点都推荐大家使用using(sqlconnection cn=new sqlconnection()){}这样的方式来创建Connection,因为当超过{}后,.net framwork会自动执行Connection.dispose()方法,所以能够确保Connetion被及时的关闭。

那么及时的调用.dispose()真的这么重要么,如果一个对象超出了生存空间,在.ADO.Net Team中不是会自动被GC(垃圾回收器)自动清理的么?

这个问题其实是由于GC导致的,.net中使用的GC,他对于工作并不像我们这样勤奋。ADO.Net Team只有当外界环境极其恶劣的时候(没有足够的内容分配的时候)他才会动手打扫卫生(清理不使用的对象)。所以对于Connection 即使超出了变量的生命周期,它可能还没有被GC干掉。#t#

依旧未将Connection返回给Connection Pool。所以这就导致了下一个连接可能会有Connection Pool中没有Available的Connection而从新打开一个新的连接,无端的浪费了多余的性能。所以ADO.Net Team反复强调要及时的关闭当前的连接。一个最好的方法就是使用using{}block 系统会在退出{}的时候自动调用connection.dispose方法,而dispose会自动去执行close方法,释放当前的connection。

其实Connection.dispose方法就是call了一次close方法,所以两者是等同的。也就是说,如果您及时的执行了connection.close()方法,就没有必要必须再把connection包裹在一个using(){}中。如果使用using 是必需的,那么如果程序结构导致我无法使用using(){}来包裹我的Connection,比如说我的ADO.Net TeamConnection是同一个help类返回的,那我又怎么办呢?

这是一个经常遇到的问题。在这样的环境中,我们无法将整个connection包裹在一个connection中。解决这样的方法有两个,一个就是修改您的代码结构。传入一个ConnectionString来返回Connection。另一个方法就是反复检查您的代码,是否及时关闭了ADO.Net Team。因为Close的效果与dispose是相同的。但是如果不使用using(){}这个及时关闭Connection的任务就等于是交到了我们自己的手上,而不再由.net framework为我们把关了。

网站标题:实践ADO.NetTeam相关学习
网站路径:http://www.mswzjz.com/qtweb/news2/166402.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联