• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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