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 .