Использование ADO.NET DataSet - PullRequest
       3

Использование ADO.NET DataSet

0 голосов
/ 05 января 2011

В настоящее время я пытаюсь использовать базу данных SQLite с DataGridView в C #.

Я видел пример программы, которая выполняет следующее:

DataSet combinedDataSet = new DataSet();
DataTable ContactsTable = CombinedDataSet.Tables.Add("contacts");
DataTable FoodTable = CombinedDataSet.Tables.Add("food");

SQLiteDataAdapter ad = new SQLiteDataAdapter(command)

ad.Fill(FoodTable);
ad.Fill(ContactsTable);

Затем используется эта таблица данныхв качестве источника для сетки данных.

Мой вопрос такой:

Зачем использовать набор данных?Почему бы просто не перейти прямо к DataTable?

Я уверен, что есть очень веская причина, но, исключив его из кода, он все равно выглядит как для нормальной работы.

Ответы [ 4 ]

1 голос
/ 05 января 2011

DataSet - это представление реляционных данных в памяти.В частности, он может содержать несколько DataTables со связями между ними.


См. " DataSets, DataTables и DataViews (ADO.NET) " для хорошего набора обзорных статей.,Вы увидите, как DataSet поддерживает коллекцию объектов DataRelation и как каждый DataTable поддерживает свою собственную коллекцию родительских и дочерних отношений.

0 голосов
/ 05 января 2011

Совершенно нормально иметь только DataTables без DataSets

Помимо того, что @Джон Сондерс сказал об отношениях, я могу вспомнить еще два преимущества

При работе с типизированными наборами данных (сгенерированными из xsl) вы обычно работаете на уровне наборов данных, поскольку типизированные таблицы данных вложены в DataSet.

Набор данных полезен для отладки. В промежуточном окне вы можете вызвать combinedDataSet.GetXml(), чтобы просмотреть его или сохранить в файл для лучшего анализа содержимого. Я не уверен, что новый dotnet-4 разрешит Table.GetXml (), но до dotnet-3.5 table.GetXml () не существует.

0 голосов
/ 05 января 2011

С практической точки зрения может потребоваться использование объектов DataSet, если вы используете объект DataAdapter для выполнения обновлений.Например, если вы хотите использовать метод DataAdapter.Update , вам необходимо передать ему объект DataSet.

0 голосов
/ 05 января 2011

Я согласен, что здесь нет особой причины для помещения DataTables в DataSet. DataSet - это просто удобный контейнер для передачи DataTables, в том числе потенциально в Session.

Если вы считаете, что проще и чище вызывать таблицы данных отдельно, по мере необходимости, и не связывать их друг с другом в наборе данных, это будет работать просто отлично.

...