2008-10-05 3 views
11

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

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

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

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

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

ответ

3

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

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

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

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

1

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

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

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

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

советы:

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