.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.