Команды которые вы ассоциируете с адаптером данных

в случае большого набора данных

В любом случае команды, которые вы ассоциируете с адаптером данных, будут исполняться по одной для каждой строки в наборе данных, которая требует обновления. В случае большого набора данных с большим числом изменений это может привести к массе обратных пересылок по сети к базе данных. Для решения этой проблемы в ADO. NET 2.0 класс SqlDataAdapter Имеет механизм пакетного обновления, который будет группировать все запросы и сразу посылать их базе данных в одном или нескольких пакетах. Чтобы воспользоваться этой возможностью, вы устанавливаете свойство UpdateBatchSize В SqlDataAdapter Некоторым значением, отличным от 1 . Если вы устанавливаете значение О, то все обновления будут сгруппированы в один пакет. Если устанавливается некоторое положительное значение, большее 1, адаптер данных будет набирать пакеты с указанным количеством запросов и посылать их до тех пор, пока все обновления не будут завершены. Однако следует иметь в виду, что когда вы применяете такой подход и посылаете пакет запросов на обновление, в SQL Server они будут исполняться как одна транзакция. Поэтому, если какой-либо строке в пакете не удастся выполнить свое обновление, потерпит неудачу весь пакет. Чтобы автоматически формулировать запросы обновления для непосредственной работы с таблицами, имеется класс SqlCommandBuilder, Который может исследовать команду выбора, используемую в адаптере данных, и динамически генерировать за вас команды вставки, обновления и удаления. Затем он заполнит командные свойства адаптера соответствующими запросами. Построитель команд хорошо работает для простых наборов данных, которые содержат таблицы, генерированные операторами SELECT для одиночной таблицы с ограничением первичного ключа. Автоматическое создание команд происходит при конструировании объекта построителя команд с передачей адаптера данных, для которого нужно создать команды. Никакие его методы или свойства вы не будете на самом деле вызывать непосредственно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *