• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вопрос: Как ускорить 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 пишу
 
Мы в соцсетях:

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