Updating a Data Source Using Custom Logic
The CommandBuilder
provides an extremely convenient way to create the required
Command
objects, but it has definite limitations.
Here are some reasons to avoid the CommandBuilder
and use your own custom updating logic:
- Stored procedures
Most significant applications use stored procedures because of their benefits, which include maintainability, security, and performance over SQL statements.
- Table joins
In some cases, table joins are needed to retrieve aggregate information. However, even if you edit only fields from a single table, the
CommandBuilder
can’t automatically generate theCommand
objects.- More flexible concurrency handling
The UPDATE and DELETE statements generated by the
CommandBuilder
search the data source for a row that matches all fields in the original row exactly. If any original values have changed, the update will fail for that row. In some cases, this approach isn’t ideal.
There is only one real difference between using the
CommandBuilder
and custom
update logic. The CommandBuilder
generates the
DeleteCommand
, InsertCommand
,
and UpdateCommand
objects used by the
DataAdapter
to reconcile changes made to the
DataSet
with the data source. With custom update
logic, those update objects have to be defined.
The SourceColumn
and
SourceVersion
properties of the
Parameter
object bind associate a
Parameter
with a DataColumn
.
The DataAdapter
uses these properties to determine
the source of the values within the DataRow
; these values ...
Get ADO.NET in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.