现在这更像是一种好奇而不是实际目的.如果你SqlConnection打开并附加一个SqlDataReader,然后尝试使用相同的运行另一个查询,SqlConnection那么它将抛出一个错误.我的问题是如何SqlConnection知道读者是否依附于它.没有公共财产或任何东西HasDataReader,所以SqlConnection班级怎么知道?
原始问题:(不再相关)
嗨,我正在为连接池和我们发生的更常见的错误设置一个小东西(它总是一个简单的修复,但我们只是记不起来reader.Close()!)它是我们有一个使用的连接通过许多类/方法和一种方法打开数据读取器并忘记关闭它.这并不是很糟糕,因为很多时候你需要做的就是进入调试器并升级到一个级别并在它之前看到它并检查它是否有一个未闭合的数据读取器.
现在,这是一个更大的问题.在这个连接池中,如果一个datareader是打开的,那么直到一个线程获得连接并尝试使用它并且最初打开数据读取器的东西可能不再存在时,它就不可知.
非常简单,如何检测数据读取器是否在连接上打开,是否有办法在不关闭连接的情况下关闭阅读器?