thanks for the response, not very helpful I'm afraid!I have managed to work out the solution which others may find useful.
It is possible to use a delegate function to achieve this. When you call the GetMigrationSQL() function, you need to pass in the name of the delegate function, i.e.
ExecutionBlock block = provider.GetMigrationSQL(session, new SelectionDelegate(SyncRecord), true);
where SyncRecord is the name of the function. The SyncRecord function is as follows
private static bool SyncRecord(SynchronizationRecord syncRecordObject)
Reader resultsReader = m_TableDifferences[syncRecordObject.TableName].ResultsStore.GetReader(Row.RowType.All);
// return true if the current record is to be included in the script
Row row = resultsReader.GetRow(syncRecordObject.Bookmark);
// data not in db2 but in db1 (depending on the comparison order, means either delete or insert)
if (row.Type == Row.RowType.In2)
This function returns true if you want the changes, otherwise it returns False to ignore it.
There are several options available to Row.RowType, in this case In2 indicates the record exists in the destination database but not in the source (i.e. a delete).
In the scenario above, this ieffectively ignore all difference in the destination database (Updates and Deletes), which is fine for what I need because it should be a push from the source to the destination.
Hope this helps someone.[/b]