0

我的任务是创建一个类,客户可以使用该类从特定数据源获取数据。例如,主要例程将是

IDataReader GetDataReader(DbCommand command);
DataSet GetDataSet(DbCommand command);

我知道数据访问应用程序块可以做到这一点,但由于我不会解释的原因,我不能使用应用程序块。无论如何,我确实打算借用一些逻辑。

但是,我任务的另一部分是跟踪打开的 DataReader。这只是为了验证每个人都正确地关闭了他们的读者。我的计划是在这个新类中只包含一个 DataReader 集合,每次调用 GetDataReader 例程时都会添加这些集合。在应用程序执行结束时,代码将遍历此集合并将警告记录到每个仍打开的阅读器的文件中。

所以,我有两个问题:

  1. 这种设计有什么本质上的问题吗?
  2. 无论如何我可以从 DataReader 执行 SQL 命令吗?这将大大简化对未封闭阅读器的搜索。或者,我是否必须存储读取器/命令对才能获取此信息?
4

1 回答 1

2

您是否考虑过将数据访问组件设置为更高级别以强制执行规则?例如,为了执行 get-in-get-your-data-and-get-out-and-close 策略,我们仅从数据访问组件返回数据集和缩放器(我们还执行其他规则,例如仅使用存储过程与数据库交互)。如果调用者真的只需要数据而不需要数据读取器,也许您可​​以从读取器读取数据然后关闭它,因此不必跟踪读取器的状态。

如果您确实有返回 DataReader 的技术需求(并且会有很多),也许您可​​以创建包装类或读取器的子类并返回它而不是返回原始读取器......例如 TrackedDataReader。然后,您可以将簿记内置到班级本身中。只是一个想法。

于 2009-06-10T18:54:03.887 回答