私は、クライアントが特定のデータソースからデータを取得するために使用できるクラスを作成するように任命されました。たとえば、メインルーチンは次のようになります
IDataReader GetDataReader(DbCommand command);
DataSet GetDataSet(DbCommand command);
Data Access Applicationブロックがこれを行うことは知っていますが、説明しない理由でアプリケーションブロックを使用できません。とにかく、私はいくつかのロジックを借りるつもりです。
ただし、私のタスクのもう1つの部分は、開いているDataReaderを追跡することです。これは、すべての人がリーダーを適切に閉じていることを確認するためだけに必要です。私の計画は、この新しいクラス内にDataReaderのコレクションを含めることでした。これは、GetDataReaderルーチンが呼び出されるたびに追加されます。アプリの実行が終了すると、コードはこのコレクションを通過し、まだ開いている各リーダーのファイルに警告を記録します。
だから、私は2つの質問があります:
- このデザインに本質的に何か問題がありますか?
- とにかく、DataReaderからSQLコマンドを実行することはできますか?これにより、閉じていないリーダーの検索が大幅に簡素化されます。または、この情報を取得するためにリーダーとコマンドのペアを保存する必要がありますか?