public virtual int UpdateAll(dt_guard_profile dataSet) { if (dataSet == null) { throw new ArgumentNullException("dataSet"); } if (!dataSet.HasChanges()) { return(0); } IDbConnection workConnection = this.Connection; if (workConnection == null) { throw new ApplicationException("TableAdapterManager contains no connection information. Set each TableAdapterManager TableAdapter property to a valid TableAdapter instance."); } bool workConnOpened = false; if ((workConnection.State & ConnectionState.Broken) == ConnectionState.Broken) { workConnection.Close(); } if (workConnection.State == ConnectionState.Closed) { workConnection.Open(); workConnOpened = true; } IDbTransaction workTransaction = workConnection.BeginTransaction(); if (workTransaction == null) { throw new ApplicationException("The transaction cannot begin. The current data connection does not support transactions or the current state is not allowing the transaction to begin."); } List <DataRow> allChangedRows = new List <DataRow>(); List <DataRow> allAddedRows = new List <DataRow>(); List <DataAdapter> adaptersWithAcceptChangesDuringUpdate = new List <DataAdapter>(); Dictionary <object, IDbConnection> objs = new Dictionary <object, IDbConnection>(); int result = 0; DataSet backupDataSet = null; if (this.BackupDataSetBeforeUpdate) { backupDataSet = new DataSet(); backupDataSet.Merge(dataSet); } try { try { if (this.UpdateOrder != TableAdapterManager.UpdateOrderOption.UpdateInsertDelete) { result += this.UpdateInsertedRows(dataSet, allAddedRows); result += this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows); } else { result += this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows); result += this.UpdateInsertedRows(dataSet, allAddedRows); } result += this.UpdateDeletedRows(dataSet, allChangedRows); workTransaction.Commit(); if (0 < allAddedRows.Count) { DataRow[] rows = new DataRow[allAddedRows.Count]; allAddedRows.CopyTo(rows); for (int i = 0; i < (int)rows.Length; i++) { rows[i].AcceptChanges(); } } if (0 < allChangedRows.Count) { DataRow[] rows = new DataRow[allChangedRows.Count]; allChangedRows.CopyTo(rows); for (int i = 0; i < (int)rows.Length; i++) { rows[i].AcceptChanges(); } } } catch (Exception exception) { Exception ex = exception; workTransaction.Rollback(); if (this.BackupDataSetBeforeUpdate) { dataSet.Clear(); dataSet.Merge(backupDataSet); } else if (0 < allAddedRows.Count) { DataRow[] rows = new DataRow[allAddedRows.Count]; allAddedRows.CopyTo(rows); for (int i = 0; i < (int)rows.Length; i++) { DataRow row = rows[i]; row.AcceptChanges(); row.SetAdded(); } } throw ex; } } finally { if (workConnOpened) { workConnection.Close(); } if (0 < adaptersWithAcceptChangesDuringUpdate.Count) { DataAdapter[] adapters = new DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); for (int i = 0; i < (int)adapters.Length; i++) { adapters[i].AcceptChangesDuringUpdate = true; } } } return(result); }