Data is separated from source. Datasets store tables of data and a graph of
the relationships between the tables. The relationship can change at any
time. The relationships are described by metadata that describe primary
key, foreign key, and lookups, and other relationships between tables. In
one embodiment, the tables of data are typed columns of data. The dataset
also includes information on the rowstate and differential preservation,
therefore, the source does not need to manage states of the data access.
Adapters abstract the interface to datasets. More specifically, adapters
manage the input/output to the datasets of the tables of data and the
relationships. Adapters can be specialized in their purpose, such as an
adapter for OLE data or XML data or generalized in their purpose.
Furthermore, a composite adapter is specialized for the purpose of
interacting with other adapters. Adapters manage the connection to the
dataset and the name of the server that hosts the dataset. Data hoisting
is implemented, in which the fluid relationship of data is changed in
response to current data needs.