При выполнении следующего кода для большой таблицы PostgreSQL объект NpgsqlDataReader блокируется до тех пор, пока не будут получены все данные.
NpgsqlCommand cmd = new NpgsqlCommand(strQuery, _conn);
NpgsqlDataReader reader = cmd.ExecuteReader(); // <-- takes 30 seconds
Как мне заставить его вести себя так, чтобы он не выполнял предварительную выборку всех данных? Я хочу пошагово проходить по результирующему набору без необходимости извлекать все 15 ГБ в память сразу.
Я знаю, что в Npgsql 1.x были проблемы с такими вещами, но я нахожусь на 2.0. Это против базы данных PostgreSQL 8.3 в XP / Vista / 7. У меня также нет никаких прикольных «форсировок Npgsql» в моей строке подключения. Я в полном недоумении, почему это происходит.