Вопрос: Как ускорить Tableadapter.fill?

  • Автор темы EvgeniyVSmirnov
  • Дата начала
E

EvgeniyVSmirnov

Гость
#1
TableAdapter быстро выполняет процедуру и долго расчитывает вычисляемые поля.

Есть процедура - выполняется при запуске из ssms за ~0,1сек
При заполнение datatable, вызовом из клиента метода fill - ~12 сек
в sql profiler'e время выполнения процедуры одинаковое в обоих случаях.
после выполнения процедуры клиент висит эти самые 12 сек.
этот datatable является дочерним набором данных для другой таблицы
в родительском 3 вычисляемых поля по дочернему.
выяснил, что тормозит, если включен расчет этих 3х полей.

Подскажите, как избавится от тормозов.
 
E

EvgeniyVSmirnov

Гость
#3
выключить расчет этих трех полей.
Как это сделать?
BeginLoadData, EndLoadData - не помогли. они отключают ограничения и индексы, а расчет полей похоже, что нет. По крайней мере быстрее не стало.
выполнял эти методы для обоих datatable
 
E

EvgeniyVSmirnov

Гость
#4
Поудалял все вычисляемые поля из конструктора. и создаю их программно после загрузки данных - так работает.

Теперь вопрос к MS: Это баг или фича?
Это так задумано разработчиками .Net, что все вычисляемые поля будут создаваться после загрузки данных или это случайно так получилось?
 
C

CSerX

Гость
#5
Поудалял все вычисляемые поля из конструктора. и создаю их программно после загрузки данных - так работает.

Теперь вопрос к MS: Это баг или фича?
Это так задумано разработчиками .Net, что все вычисляемые поля будут создаваться после загрузки данных или это случайно так получилось?
Попробуй лучше вызвать у BindingSource SuspendBinding вместо удаления колонок, что остановит обновления интерфейса во время загрузки, может и перестанет тормозить. После нужно вызвать ResumeBinding для включения событий и ResetBindings для вызова обновления данных на интерфейсе. При чем думаю что нужно у обоих BindingSource вызвать SuspendBinding. Правда бывают сложности что бы их включать выключать, я уже не помню точно, но были глюки какие то, решается тем что в нужном порядке вызвать нужно хотя может и еще что, повторюсь не помню давно работал с WinForms сейчас на ASP.Net пишу