Я использовал пространства имен C++ тем же путем, я делаю в C#, Perl, и т.д. Это - просто семантическое разделение символов между стандартным материалом библиотеки, сторонним материалом и моим собственным кодом. Я поместил бы свое собственное приложение в одно пространство имен, затем допускающий повторное использование компонент библиотеки в другом пространстве имен для разделения.
DataReader передает только 1 строку за раз через свой api, но он выполняет массовую выборку из базы данных, буферизуя данные, поэтому ему не нужно совершать круговой обход в базу данных для в каждой строке.
Нет, SqlDataReader выполняет буферизацию на стороне клиента. Он определенно не выполняет обратный путь к серверу для получения ваших строк.