Inheritance: System.EventArgs
        private static void RaiseMergeFailedEvent(DataTable targetTable, string errMsg)
        {
            MergeFailedEventArgs args = new MergeFailedEventArgs(targetTable, errMsg);

            if (targetTable.DataSet != null)
            {
                targetTable.DataSet.OnMergeFailed(args);
            }
        }
Exemplo n.º 2
0
 internal virtual void OnMergeFailed(MergeFailedEventArgs e)
 {
     if (MergeFailed != null)
     {
         MergeFailed(this, e);
     }
     else
     {
         throw new DataException(e.Conflict);
     }
 }
Exemplo n.º 3
0
		// 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;
		}
Exemplo n.º 4
0
		private void Merge_Failed( object sender, MergeFailedEventArgs e )
		{
			EventRaised = true;
		}
Exemplo n.º 5
0
		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);
 }
Exemplo n.º 8
0
 /// <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);
 }
Exemplo n.º 9
0
		internal virtual void OnMergeFailed (MergeFailedEventArgs e)
		{
			if (MergeFailed != null)
				MergeFailed (this, e);
		}
Exemplo n.º 10
0
		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);
        }