ADO.Net -同时运行多个dbdatareader



当我同时有多个DBDataReaders读取数据时,我得到以下错误:

There is already an open DataReader associated with this Connection which must be
closed first

我在我的配置中启用了ConnectionPooling,所以我不明白为什么我得到这个错误。既然我当前的连接已经在使用,它不应该创建一个新的连接吗?

我知道设置MultipleActiveResultSets为true会解决问题,但我仍然试图理解为什么问题存在

连接池并不像你想象的那样。

如果你这样做

var connection = new SqlConnection(connectionString);
connection.Open();
var command = connection.CreateCommand();
command.CommandText = // some query
var reader = command.ExecuteReader();
var anotherCommand = connection.CreateCommand();
anotherCommand.CommandText = // another query
var anotherReader = anotherCommand.ExecuteReader();

那么所有这些都将发生在一个连接上,无论你是否有连接池。

连接池只是保持连接的缓存,你可以从每次你创建一个新的连接(new SqlConnection)和打开它(SqlConnectinon.Open)。当您关闭连接时,它将返回到要重用的池。但是一个打开的SqlConnection对象对应于池中的一个连接。时期。

相关内容

  • 没有找到相关文章

最新更新