14.6 AcceptChangesDuringFill
The AcceptChangesDuringFill(
) controls whether AcceptChanges(
) is implicitly called on new rows when they are added to a
DataTable by the Fill( )
method. If AcceptChangesDuringFill is
true, the rows added as a result of the
Fill( ) have a RowState of
Unchanged after they are added to the
DataSet. If
AcceptChangesDuringFill is
false, the RowState of the
newly added rows is Added. The following example
demonstrates this:
// connection and select command strings
String connString = "Data Source=(local);Integrated security=SSPI;" +
"Initial Catalog=Northwind;";
String selectSql = "SELECT * FROM Orders";
// create a new DataSet to receive the data
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(selectSql, connString);
da.Fill(ds, "Orders");
// each row in the Orders table has RowState = Unchanged
ds.Tables["Orders"].Clear();
da.AcceptChangesDuringFill = false;
da.Fill(ds, "Orders");
// each row in the Orders table has RowState = Inserted
// manually call AcceptChanges
ds.AcceptChanges();
// each row in the Orders table has RowState = Unchanged
The default value for AcceptChangesDuringFill is
true. Because the records already exist in the
data source, the records retrieved during the Fill(
) operation should not be considered new records when the
data source is eventually updated with the
DataSet.
Setting AcceptChangesDuringFill to
false can be useful, for example, to transfer data
between data sources. Records retrieved from a data source are marked
as New, and the DataSet can
then insert these records into another data source using the
Update( ) method of a
DataAdapter.
|