LINQ to SQL SubmitChangess () прогресс - PullRequest
       22

LINQ to SQL SubmitChangess () прогресс

4 голосов
/ 30 декабря 2010

Я использую LINQ для SQL, чтобы импортировать старые файлы DBF в MSSQL.Я читаю все строки и добавляю их в базу данных, используя ctx.MyTable.InsertOnSubmit(row)

После завершения фазы чтения у меня есть около 100 000 ожидающих вставок.ctx.SubmitChanges() естественно занимает много времени.

Есть ли способ отследить прогресс ctx.submitchanges()?Можно ли каким-то образом использовать ctx.Log для этой цели?

Обновление : можно ли использовать ctx.GetChangeSet().Inserts.Count и отслеживать операторы вставки с использованием журнала?

Деление ctx.SubmitChanges() в более мелкие куски не работает для меня, потому что мне нужна транзакция, все или ничего.

Обновление 2: Я нашел хороший класс ActionTextWriter, с помощью которого я попытаюсь сосчитать вставки.

http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers

Обновление 3:

Я создал первый прототип кода, он не оптимизирован.Вроде работает :) 1030

ctx.Log = new ActionTextWriter(s => {
 counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
 ReportProgress(counter);
});

1 Ответ

0 голосов
/ 30 декабря 2010

Мне удалось получить информацию о прогрессе, проанализировав журнал и используя ActionTextWriter

http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers

ctx.Log = new ActionTextWriter(s => {
    if (s.StartsWith("INSERT INTO"))
        insertsCount++;
});
...