我有一个方法(称之为“GetDataReader”),它返回一个SqlDataReader。它在一个单例DataFactory类中,该类维护与数据库的持久连接。
问题是,返回后,DataReader仍然与我的DataFactory中的Connection对象“连接”。所以,在调用GetDataReader的代码之后,我必须确保调用Close()来关闭返回的DataReader,否则会出现以下情况:“锁定”了Connection:
已经有一个与此命令关联的打开的DataReader,必须先关闭它。
如何在从GetDataReader发送回数据之前“分离”DataReader?要么这样,要么克隆它并发送克隆版?我不想让调用代码总是显式地将其关闭。
这里必须有最佳实践。
更新:
感谢大家的意见。底线是我需要摒弃使用DataReader的习惯,转而使用DataTables。它们更易于管理。
另外,感谢关于连接池的说明。我知道它,但只是没有将两个部分放在一起,意识到我正在重新发明轮子。
问题是,返回后,DataReader仍然与我的DataFactory中的Connection对象“连接”。所以,在调用GetDataReader的代码之后,我必须确保调用Close()来关闭返回的DataReader,否则会出现以下情况:“锁定”了Connection:
已经有一个与此命令关联的打开的DataReader,必须先关闭它。
如何在从GetDataReader发送回数据之前“分离”DataReader?要么这样,要么克隆它并发送克隆版?我不想让调用代码总是显式地将其关闭。
这里必须有最佳实践。
更新:
感谢大家的意见。底线是我需要摒弃使用DataReader的习惯,转而使用DataTables。它们更易于管理。
另外,感谢关于连接池的说明。我知道它,但只是没有将两个部分放在一起,意识到我正在重新发明轮子。