.NET Table Adapters: получить против заполнения? - PullRequest
11 голосов
/ 05 октября 2008

Мне всегда кажется, что я использую Get при работе с данными (строго типизированными или иными) из базы данных, и мне никогда не приходилось использовать Fill, хотя я также легко мог использовать Fill вместо get при извлечении и обновлении данных. 1001 *

Может ли кто-нибудь дать руководство относительно последствий и ошибок каждого метода?

В каких ситуациях предпочтительнее использовать одну или другую?

Какие-либо последствия для производительности?

Заранее спасибо за ответы! Я люблю это сообщество!

Ответы [ 4 ]

4 голосов
/ 12 февраля 2009

Использование Fill может быть отлично подходит для отладки исключений, потому что DataTable, переданный в метод, можно запросить для получения более подробной информации. Get не возвращается в той же ситуации.

Советы:

  • DataTable.GetErrors () возвращает массив экземпляров DataRow с ошибкой
  • DataRow.RowError содержит описание ошибки строки
  • DataRow.GetColumnsInError () возвращает массив экземпляров DataColumn в ошибка
3 голосов
/ 05 октября 2008
  • Получите, когда вам нужен только один DataTable.
  • Заполните, если вы хотите добавить дополнительные DataTables в один DataSet.
3 голосов
/ 14 октября 2008

Особая особенность Fill, если таблица уже содержит данные, состоит в том, что вы можете получить уникальные исключения индекса, когда, например, запрос возвращает строку, первичный ключ которой уже находится в таблице.

Я работал с большим количеством кода Windows Forms, привязанного к данным, в котором элементы управления редактирования или сетка в форме привязаны к таблице, а затем Fill используется для загрузки большего количества строк из базы данных в таблицу. Это может вызвать некоторые интересные последовательности запуска событий и случайные ошибки из опыта.

Использование Get для извлечения новой таблицы с новыми результатами и последующего связывания формы с новой таблицей позволяет избежать подобных ситуаций.

Я сомневаюсь, что между ними существует большая разница в производительности, если только не использовать Fill для таблицы с существующими строками. В этом случае метод таблицы BeginLoadData игнорируется, что обычно приводит к задержке запуска события и перестройке индекса до конца.

1 голос
/ 05 октября 2008

Разница лишь в том, что GetData создает для вас таблицу, Fill заполнит существующую таблицу.

Зависит от того, хотите ли вы или хотите создать экземпляр DataTable. Я часто использую Fill при заполнении определенного элемента таблицы набора данных, который я уже создал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...