Мы все знаем, что DataReaders быстрее, чем DataTables, так как DataReader используется при построении DataTable.
Поэтому, учитывая, что у меня уже есть DataTable .... Почему я хочу преобразовать его в DataReader?
Я создаю внутренний интерфейс с именем IDataProvider. Этот интерфейс предназначен для реализации как локально, так и в виде веб-сервиса. Интерфейс будет иметь метод «Getdata», который принимает некоторую информацию о критериях и возвращает некоторые данные.
Поскольку DataReader является самым быстрым механизмом извлечения данных, я хочу использовать его как тип результата метода «GetData».
Однако мы также знаем, что DataReader не сериализуем и поэтому не может передаваться через Интернет через веб-сервис ...
В случае с Интернетом я бы попросил локальный прокси-класс запросить данные как DataTable, а затем преобразовать их локально в DataReader.
Таким образом, Локальное приложение не должно знать (или заботиться) об этом, если оно обращается к данным локально или удаленно.
Однако для этого мне нужно знать ... Как мне обернуть DataReader вокруг существующей DataTable?
Обновление: моя бизнес-логика не будет храниться в веб-сервисе, поскольку DataProvider, который использует веб-сервис, переключается на тот, который этого не делает.
Поэтому businessLogic будет храниться в клиентском приложении.
FWIW Я использую .Net 3.5 SP1