In this chapter, you learned about working with disconnected data by using the DataSet and many other related ADO.NET classes. We covered the following topics:
How to create and configure a DataAdapter to fill a DataSet
How to configure a DataAdapter to submit inserts, updates, and deletes from the local DataSet back to the database
How to work with the DataTable, DataRow, and DataColumn objects that make up the internal structure of the DataSet
How the DataSet maintains both current values and original values of the data and keeps track of the state (modified, unchanged, deleted, and so on) of each row
How the AcceptChanges and RejectChanges methods affect row version and row state, and which updates are sent to the database
What specific types of DataExceptions are available and how to write error-handling code to catch different types of exceptions
How to use DataViews to sort, filter, and find data in the DataSet
How to use a DataViewManager to manage settings for all DataViews associated with a DataSet
How to apply ForeignKeyConstraints and UniqueConstraints to DataSets and DataTables
How DataRelations enable navigation between parent and child records in related tables in the DataSet
How to use Visual Studio .NET Toolbox data components to add ADO.NET objects to your project and automatically generate code to create and configure the objects
How to use the Data Adapter Configuration Wizard to generate SQL commands
How to automatically generate a strongly typed DataSet
The advantages of working with strongly typed DataSets