我有一个返回 SqlDataReader 的方法(“GetDataReader”,我们称之为)。它位于 Singleton DataFactory 类中,该类维护与数据库的持久连接。
这样做的问题是,在返回后,DataReader 仍然“连接”到我的 DataFactory 中的 Connection 对象。因此,我必须确保调用 GetDataReader 的代码然后在返回的 DataReader 上调用 Close(),否则,它会“锁定”连接:
已经有一个与此命令关联的打开的 DataReader,必须先关闭它。
在从 GetDataReader 发回 DataReader 之前,如何“分离”它?要么,或者克隆它并发送回克隆?我不想让调用代码总是显式地关闭它。
这里必须有一个最佳实践。
更新:
谢谢各位的意见。底线是我需要改掉使用 DataReaders 的习惯,改用 DataTables。它们更易于管理。
另外,感谢有关连接池的说明。我知道这一点,但只是没有把两个和两个放在一起并意识到我正在重新发明轮子。