ADO.NET fully supports the use of disconnected and offline DataSets.
A DataSet is like a miniature database, complete with tables, columns, keys and constraints, which can be filled from a database. When a DataSet is modified, both current and original values of data are kept in the DataSet. This allows the DataSet to be synchronized with the database from which it was filled after being passed between servers and components in a distributed system. Used in this way, a DataSet can be regarded as a lightweight replication tool. For example, data for a customer order is extracted from a database and processed remotely from the database server. Later, the database is synchronized with the changes made to the DataSet. Processing could take place on either a Web server or a laptop. Because the DataSet has no connection to the database while it is being processed, optimistic concurrency must be used when the database is updated.
DataSet contents can also be loaded from and saved to data sources other than relational databases. For example, XML files or software components, where the mechanism used to store data does not concern the application that processes the contents of the DataSet, can be used. DataSets also have excellent support for data binding to user interface controls in WinForms and WebForms. This means that DataSets are useful for communicating data in mixed language applications.