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


da.AcceptChangesDuringFill = false;

da.Fill(ds, "Orders");

// each row in the Orders table has RowState = Inserted

// manually call 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 ...

Get ADO.NET in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.