Мне было поручено создать класс, который клиенты могут использовать для получения данных из определенного источника данных. Например, основные процедуры будут
IDataReader GetDataReader(DbCommand command);
DataSet GetDataSet(DbCommand command);
Я знаю, что блок приложения доступа к данным делает это, но я не могу использовать блок приложения по причинам, которые я не буду объяснять. Во всяком случае, я планирую позаимствовать немного логики.
Однако другая часть моей задачи - отслеживать открытые DataReaders. Это просто для того, чтобы убедиться, что все закрывают своих читателей должным образом. Мой план состоял в том, чтобы внутри этого нового класса была коллекция DataReaders, которая будет добавляться при каждом вызове процедуры GetDataReader. В конце выполнения приложения код будет проходить через эту коллекцию и записывать предупреждения в файл для каждого открытого считывателя.
Итак, у меня есть 2 вопроса:
- Что-то не так с этим дизайном?
- Можно ли в любом случае выполнить команду SQL из DataReader? Это значительно упростит поиск незамкнутого читателя. Или я должен сохранить пару читатель / команда, чтобы получить эту информацию?