.NET Table Adapters: Get vs. Fill?

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

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

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

Любые последствия производительности?

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

Ответ 1

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

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

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

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

Ответ 2

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

Советов:

  • DataTable.GetErrors() возвращает массив экземпляров DataRow, которые находятся в ошибке
  • DataRow.RowError содержит описание ошибки строки
  • Возвращает DataRow.GetColumnsInError() массив экземпляров DataColumn в ошибка

Ответ 3

  • Получить, когда вам нужен только один DataTable.
  • Заполните, если вы хотите добавить дополнительные DataTables в один DataSet.

Ответ 4

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

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