Я хотел бы иметь возможность выполнить запрос только один раз и постоянно держать результирующий DataReader открытым для получения новых строк по мере их добавления в таблицу базы данных. Примерно так:
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from table";
using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)){
while (true){
while (!reader.HasRows)
Thread.Sleep(1000);
if (reader.Read())
LoadCurrentRow(reader);
}
}
Это не работает так, как мне бы хотелось. Я получаю только те строки, которые доступны во время выполнения запроса. Я не получаю новые строки, которые добавляю, пока выполняется этот код. Шаблон BeginExecuteReader / EndExecuteReader кажется более подходящим, но дает тот же результат. Разве что я чего-то не понял ...
Может ли кто-нибудь помочь мне выполнить эту работу или предложить альтернативу, которая не предполагает периодического опроса новых строк, повторяя запрос снова и снова?