• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

EvgeniyVSmirnov

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

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

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

vitfil

выключить расчет этих трех полей.
 
E

EvgeniyVSmirnov

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

EvgeniyVSmirnov

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

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

CSerX

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!