MSDN Documentation

Dataset Structure

The DataSet object is a core component of ADO.NET, providing an in-memory representation of data. It can hold multiple tables, relationships, and constraints, allowing you to work with data independently of the data source.

Key Components of a DataSet

A DataSet is composed of several key elements that define its structure and content:

  • Tables: DataTable objects represent the individual tables within the DataSet. Each DataTable contains rows and columns.
  • Relations: DataRelation objects define relationships between tables, similar to foreign key relationships in a relational database.
  • Constraints: Constraint objects enforce data integrity rules, such as unique values (UniqueConstraint) and referential integrity (ForeignKeyConstraint).

DataTable Object

The DataTable object is the building block for representing tabular data within a DataSet. It has the following important members:

Columns

The Columns collection of a DataTable defines the schema of the table, including column names, data types, and nullability.

public DataColumnCollection Columns { get; }

Rows

The Rows collection holds the actual data as DataRow objects. You can add, delete, and modify rows within this collection.

public DataRowCollection Rows { get; }

Primary Key

You can define a primary key for a DataTable to uniquely identify rows.

public DataColumn[] PrimaryKey { get; set; }

Example: Creating a DataSet with Tables

Here's a simple example demonstrating how to create a DataSet and add a DataTable to it:

// Create a new DataSet DataSet myDataSet = new DataSet("CompanyData"); // Create a DataTable for Employees DataTable employeesTable = new DataTable("Employees"); // Define columns for the Employees table DataColumn employeeIdColumn = new DataColumn("EmployeeID", typeof(int)); employeeIdColumn.AutoIncrement = true; employeeIdColumn.AutoIncrementSeed = 1; employeeIdColumn.AutoIncrementStep = 1; employeeIdColumn.AllowDBNulls = false; DataColumn firstNameColumn = new DataColumn("FirstName", typeof(string)); DataColumn lastNameColumn = new DataColumn("LastName", typeof(string)); // Add columns to the table employeesTable.Columns.Add(employeeIdColumn); employeesTable.Columns.Add(firstNameColumn); employeesTable.Columns.Add(lastNameColumn); // Set the primary key employeesTable.PrimaryKey = new DataColumn[] { employeeIdColumn }; // Add the DataTable to the DataSet myDataSet.Tables.Add(employeesTable); // Now you can add rows to the employeesTable...

Relationships and Constraints

DataRelation objects are crucial for defining how tables are linked. This allows you to navigate from a parent row to child rows and vice-versa.

Constraint objects, such as UniqueConstraint and ForeignKeyConstraint, are essential for maintaining data integrity within the DataSet.

Note: A DataSet provides a rich set of features for managing data in memory, including sorting, filtering, searching, and data validation.

Summary

Understanding the structure of a DataSet, including its DataTable, DataColumn, and DataRow components, is fundamental to effectively using ADO.NET for data manipulation in your .NET applications.