我正在清理我继承的旧 .NET 1.1 项目中的 DataReaders。
之前的开发人员对数据访问层进行了编码,使得大多数 DAL 方法都返回 SqlDataReaders(因此将其留给调用者来正确调用 .Close() 或 .Dispose() 方法)。
但是,我遇到了一种情况,调用者没有捕获返回的 SqlDataReader (因此没有正确处理它)。请看下面的代码:
数据访问方法:
Public Shared Function UpdateData() As SqlDataReader
...
drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)
Return drSQL
End Function
调用代码:
...
DataAccessLayer.UpdateData()
...
如您所见,调用方法没有接收/捕获返回的 SqlDataReader。那么会发生什么?那个 SqlDataReader 还在那里并打开吗?或者它会自动收集垃圾,因为没有任何东西可以解决它?
我想不出调试和测试的方法。如果有人有任何想法或建议,那就太好了。