Optimization
To maximize performance and use
of bandwidth in multitier or distributed applications, it is
important to minimize the amount of data passed back and forth
between components. The GetChanges( )
method can select the data that has been
modified in a DataSet so that only the changed
data is passed rather than the entire DataSet. The
GetChanges( ) method returns a new
DataSet with the same schema as the original
DataSet, but it contains only changed records and
any related records required so that foreign key constraints
aren’t violated. These related records can be
omitted by setting the EnforceConstraints property
of the DataSet to false prior
to calling GetChanges( ).
If the data being updated contains changes after the update is
called, in cases such as AutoIncrement field
inserts and timestamp updates, the updated data
must also be returned to the client and reintegrated with the
original DataSet. This is done by merging the
returned updated data back into the original
DataSet and accepting the changes to set the
RowState of the modified and successfully updated
rows back to Unchanged.
The merge doesn’t, however, remove the originally
inserted rows that now have data source-generated
AutoIncrement values. This is because the
Merge( ) method uses the primary key to
synchronize the rows. The solution is to delete inserted rows from
the original DataSet prior to merging.
Example 15-6 demonstrates using the
GetChanges( ) method to optimize data updating between a client ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access