Добавление DataTable в DataSet (ADO.NET)

ADO.NET позволяет создавать объекты DataTable и добавлять их к существующему DataSet. Можно задать данные ограничения для DataTable, используя свойства PrimaryKey и Unique.

Пример

Следующий пример показывает, как создать объект DataSet, добавить новый объект DataTable к DataSet, а затем добавить к таблице три объекта DataColumn. В конце код задает один столбец в качестве столбца первичного ключа.

Dim customerOrders As DataSet = New DataSet("CustomerOrders")

Dim ordersTable As DataTable = customerOrders.Tables.Add("Orders")

Dim pkOrderID As DataColumn = ordersTable.Columns.Add( _
    "OrderID", Type.GetType("System.Int32"))
ordersTable.Columns.Add("OrderQuantity", Type.GetType("System.Int32"))
ordersTable.Columns.Add("CompanyName", Type.GetType("System.String"))

ordersTable.PrimaryKey = New DataColumn() {pkOrderID}
DataSet customerOrders = new DataSet("CustomerOrders");

DataTable ordersTable = customerOrders.Tables.Add("Orders");

DataColumn pkOrderID = 
    ordersTable.Columns.Add("OrderID", typeof(Int32));
ordersTable.Columns.Add("OrderQuantity", typeof(Int32));
ordersTable.Columns.Add("CompanyName", typeof(string));

ordersTable.PrimaryKey = new DataColumn[] { pkOrderID };

Учет регистра

В DataSet могут существовать две или несколько таблиц или связей, имеющие одинаковые имена, которые, тем не менее, состоят из символов с разными регистрами. В таких случаях ссылки по имени на таблицы и связи задаются с учетом регистра. Например, если DataSet dataSet содержит таблицы Table1 и table1, ссылка на таблицу по имени Table1 выглядит как dataSet.Tables["Table1"], а на table1 — как dataSet.Tables["table1"]. Попытка сослаться на любую из таблиц как на dataSet.Tables["TABLE1"] вызывает исключение.

Это правило учета регистра не применяется, если только одна таблица или связь имеет какое-то определенное имя. Например, если набор данных DataSet содержит только таблицу Table1, можно сослаться на нее, используя формат dataSet.Tables["TABLE1"].

ПримечаниеПримечание

Указанное правило применяется без учета значения свойства CaseSensitive объекта DataSet.Свойство CaseSensitive применяется к данным в DataSet и затрагивает сортировку, поиск, фильтрацию, предписание ограничений и т. д.

Поддержка пространства имен

В версиях ADO.NET, выпущенных до версии 2.0, две таблицы не могли иметь одинаковое имя, даже если находились в разных пространствах имен. Это ограничение было снято в ADO.NET 2.0. Набор данных DataSet может содержать две таблицы, имеющие одинаковое значение свойства TableName, но различные значения свойства Namespace.

См. также

Другие ресурсы

Объекты DataSet, DataTable и DataView (ADO.NET)