【发布时间】:2012-01-28 21:05:49
【问题描述】:
来自here
看不懂
他们说 ado.net 不包含连接池机制。
1) 如果我使用 datareader 类,该类使用来自 web.config 文件的连接字符串 - 它是否有/不会有轮询机制?
2) 如果我所有的 sql 连接代码都使用 web.config 连接字符串,是否会启用连接池?还是不?
3) 默认是什么?
【问题讨论】:
标签: asp.net .net connection-pooling
来自here
看不懂
他们说 ado.net 不包含连接池机制。
1) 如果我使用 datareader 类,该类使用来自 web.config 文件的连接字符串 - 它是否有/不会有轮询机制?
2) 如果我所有的 sql 连接代码都使用 web.config 连接字符串,是否会启用连接池?还是不?
3) 默认是什么?
【问题讨论】:
标签: asp.net .net connection-pooling
SQL Server 和 Oracle SQL 提供者实现连接池。
ADO.NET 作为一个框架没有这个概念——例如,没有ConnectionPool 类。如果您查看数据库类型的基类,它们没有任何连接池支持 - 例如,比较 DbConnection 和 SqlConnection。
回答您的问题:
如果提供者实现了连接池,它可以使用它。这取决于您使用的提供程序,而不是连接字符串本身,尽管连接池设置是通过连接字符串控制的(如果提供程序支持这些选项)。
SQL Server 和 Oracle providers 是实现池的那些 - 它们将读取连接字符串设置,但连接池是否可用取决于提供者(如果连接字符串禁用池并且它在提供程序中可用,提供程序将禁用它)。
如果可用,默认是使用连接池(这取决于提供程序)。
【讨论】:
can 依赖什么?如果我正在编写一个常规连接字符串,它会被启用吗?