Я использую 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);
});