public void UpdateDataSet(DataSet dataset, int?commandTimeout = null) { dataset = dataset.GetChanges(); if (dataset == null) { return; } var changeCount = 0; using (var con = CreateConnection()) { con.Open(); using (var trans = con.BeginTransaction()) { foreach (DataTable table in dataset.Tables) { using (var cmd = CreateDbCommand(commandTimeout)) { cmd.CommandText = string.Format("SELECT {0} FROM {1}", string.Join(",", table.Columns.Cast <DataColumn>().Select(x => QuoteIdentifier(x.ColumnName))), QuoteIdentifier(table.TableName)); cmd.Connection = con; using (var adapter = CreateDbDataAdapter()) { using (var cmdBuilder = CreateDbCommandBuilder()) { adapter.SelectCommand = cmd; cmdBuilder.DataAdapter = adapter; changeCount += adapter.Update(table); } } } } trans.Commit(); } } if (changeCount > 0) { var dataChange = new DataChange { ChangeInfo = dataset.Copy(), ChangeGetter = arg => (DataSet)arg, }; RequestFireDataChanged(dataChange); } }
public int ExecuteDelete(string table, int?commandTimeout = null) { var result = ExecuteNonQuery(string.Format("DELETE FROM {0};", QuoteIdentifier(table)), false, commandTimeout: commandTimeout); if (result > 0) { var dataChange = new DataChange { ChangeInfo = table, ChangedTableGetter = args => new string[] { (string)args }, }; RequestFireDataChanged(dataChange); } return(result); }