private static void RaiseMergeFailedEvent(DataTable targetTable, string errMsg) { MergeFailedEventArgs args = new MergeFailedEventArgs(targetTable, errMsg); if (targetTable.DataSet != null) { targetTable.DataSet.OnMergeFailed(args); } }
internal virtual void OnMergeFailed(MergeFailedEventArgs e) { if (MergeFailed != null) { MergeFailed(this, e); } else { throw new DataException(e.Conflict); } }
// find if there is a valid matching between the targetTable PrimaryKey and the // sourceTable primatyKey. // return true if there is a match, else return false and raise a MergeFailedEvent. private static bool AdjustPrimaryKeys(DataTable targetTable, DataTable sourceTable) { // if the length of one of the tables primarykey if 0 - there is nothing to check. if (sourceTable.PrimaryKey.Length != 0) { if (targetTable.PrimaryKey.Length == 0) { // if target table has no primary key at all - // import primary key from source table DataColumn[] targetColumns = new DataColumn[sourceTable.PrimaryKey.Length]; for(int i=0; i < sourceTable.PrimaryKey.Length; i++){ DataColumn sourceColumn = sourceTable.PrimaryKey[i]; DataColumn targetColumn = targetTable.Columns[sourceColumn.ColumnName]; if (targetColumn == null) { // is target table has no column corresponding // to source table PK column - merge fails string message = "Column " + sourceColumn.ColumnName + " does not belongs to table " + targetTable.TableName; MergeFailedEventArgs e = new MergeFailedEventArgs(sourceTable, message); targetTable.DataSet.OnMergeFailed(e); return false; } else { targetColumns[i] = targetColumn; } } targetTable.PrimaryKey = targetColumns; } else { // if target table already has primary key and // if the length of primarykey is not equal - merge fails if (targetTable.PrimaryKey.Length != sourceTable.PrimaryKey.Length) { string message = "<target>.PrimaryKey and <source>.PrimaryKey have different Length."; MergeFailedEventArgs e = new MergeFailedEventArgs(sourceTable, message); targetTable.DataSet.OnMergeFailed(e); return false; } else { // we have to see that each primary column in the target table // has a column with the same name in the sourcetable primarykey columns. bool foundMatch; DataColumn[] targetDataColumns = targetTable.PrimaryKey; DataColumn[] srcDataColumns = sourceTable.PrimaryKey; // loop on all primary key columns in the targetTable. for (int i = 0; i < targetDataColumns.Length; i++) { foundMatch = false; DataColumn col = targetDataColumns[i]; // find if there is a column with the same name in the // sourceTable primary key columns. for (int j = 0; j < srcDataColumns.Length; j++) { if (srcDataColumns[j].ColumnName == col.ColumnName) { foundMatch = true; break; } } if (!foundMatch) { string message = "Mismatch columns in the PrimaryKey : <target>." + col.ColumnName + " versus <source>." + srcDataColumns[i].ColumnName + "."; MergeFailedEventArgs e = new MergeFailedEventArgs(sourceTable, message); targetTable.DataSet.OnMergeFailed(e); return false; } } } } } return true; }
private void Merge_Failed( object sender, MergeFailedEventArgs e ) { EventRaised = true; }
internal virtual void OnMergeFailed (MergeFailedEventArgs e) { if (MergeFailed != null) MergeFailed (this, e); else throw new DataException (e.Conflict); }
internal void RaiseMergeFailed(DataTable table, string conflict, MissingSchemaAction missingSchemaAction) { if (MissingSchemaAction.Error == missingSchemaAction) { throw ExceptionBuilder.MergeFailed(conflict); } MergeFailedEventArgs mfevent = new MergeFailedEventArgs(table, conflict); this.OnMergeFailed(mfevent); }
internal void OnMergeFailed(MergeFailedEventArgs mfevent) { if (this.onMergeFailed == null) { throw ExceptionBuilder.MergeFailed(mfevent.Conflict); } this.onMergeFailed(this, mfevent); }
/// <devdoc> /// Inheriting classes should override this method to handle this event. /// Call base.OnMergeFailed to send this event to any registered event /// listeners. /// </devdoc> internal void OnMergeFailed(MergeFailedEventArgs mfevent) { if (onMergeFailed != null) onMergeFailed(this, mfevent); else throw ExceptionBuilder.MergeFailed(mfevent.Conflict); }
internal virtual void OnMergeFailed (MergeFailedEventArgs e) { if (MergeFailed != null) MergeFailed (this, e); }
private static void RaiseMergeFailedEvent (DataTable targetTable, string errMsg) { MergeFailedEventArgs args = new MergeFailedEventArgs (targetTable, errMsg); if (targetTable.DataSet != null) targetTable.DataSet.OnMergeFailed (args); }
/// <summary> /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed. /// <example> /// mergefailedeventhandler.BeginInvoke(sender, e, callback); /// </example> /// </summary> public static IAsyncResult BeginInvoke(this MergeFailedEventHandler mergefailedeventhandler, Object sender, MergeFailedEventArgs e, AsyncCallback callback) { if(mergefailedeventhandler == null) throw new ArgumentNullException("mergefailedeventhandler"); return mergefailedeventhandler.BeginInvoke(sender, e, callback, null); }