private void ProcessChangeSet(List <SyncChange> changes) { try { var queries = new List <SQLQuery>(); foreach (var change in changes) { var data = GetDataFromSource(change); if (data.Count > 0) { var query = GetQueryForChange(change, data); queries.Add(query); } } if (queries.Count > 0) { destinationDB.RunQuery(queries, true); } else { //log??? } SetPerformanceCounters(changes); syncChangesData.UpdateStatusOfChanges(changes, RowChangeStatus.complete); } catch (Exception ex) { try { MakeSureIdentityInsertIsOff(changes); ex.WriteToApplicationLog(); PerformanceCounters.AddRowsErrored(changes.Count); syncChangesData.UpdateStatusOfChanges(changes, RowChangeStatus.error); } catch (Exception ex2) { ex2.WriteToApplicationLog(); } } }