Тайм-аут операции ожидания ожидания с Linq
Мне нужно разработать простое приложение для рабочего стола Windows, которое будет загружать CSV-файл в MDF для одной таблицы, генерировать из него несколько отчетов и затем удалять данные. CSV-файл может содержать миллионы записей...
Когда я пытаюсь выполнить код для отображения данных в dbGridView, возникает исключение "Тайм-аут операции ожидания".
db dbEntities = new db();
var ds = (from tbl in db.tbl_csv
orderby f1
select new
{
f1= tbl.f1,
f2 = tbl.f2,
f3= tbl.f3,
f4= tbl.f4,
f5= tbl.f5,
f6= tbl.f6,
f7= tbl.f7,
f8= tbl.f8
}
);
var bds = ds.ToList();
return Helpers.ToDataSet(bds);
Это работает, если csv содержит небольшой объем данных, но когда в нем более 70-80 тыс. Записей, возникает исключение...
Есть ли обходной путь для этого?
1 ответ
Решение
Читать n
количество записей одновременно. например
int totalRecords = ds.Count();
int n = 100;
int chunksRead = 0;
int recordsRead = 0;
while(recordsRead < totalRecords)
{
ds.Skip(recordsRead).Take(n);
// process n records
...
chunksRead++;
recordsRead = chunksRead * n;
}