private List <MappedTable> ParseMappedTablesOutsideFromConfig() { var mappedTablesOutside = new List <MappedTable>(); if (TableConfig.PairedColumnsOutsideTable.Count != 0 && (TableConfig.PairedColumnsOutsideTable.First().ColumnMapping.Count == 0)) { return(mappedTablesOutside); } for (int i = 0; i < TableConfig.PairedColumnsOutsideTable.Count; i++) { var mappedTableOutsideConfig = TableConfig.PairedColumnsOutsideTable[i]; var mappedTable = new MappedTable { // columns that will have to same value in the source and dest. table SourceDestPairedColumnsOutside = mappedTableOutsideConfig.ColumnMapping.Select(m => new ColumnPair(m[0], m[1])).ToList() }; var columnMapping = new List <MappedColumnPair>(); for (int j = 0; j < mappedTableOutsideConfig.SourceDestMapping.Count; j++) { var columnMappingConfig = mappedTableOutsideConfig.SourceDestMapping[j]; if (j == 0) { columnMapping.Add(new MappedColumnPair { SourceConnectionString = DatabaseConfig.ConnectionString, SourceFullTableName = TableConfig.FullTableName, DestinationConnectionString = columnMappingConfig.DestinationConnectionString, DestinationFullTableName = columnMappingConfig.DestinationFullTableName, DestinationInstance = columnMappingConfig.DestinationLinkedInstance, MappedColumns = columnMappingConfig.ForeignKeyMapping.Select(m => new ColumnPair(m[0], m[1])).ToList() }); } else { var previousColumnMappingConfig = mappedTableOutsideConfig.SourceDestMapping[j - 1]; columnMapping.Add(new MappedColumnPair { SourceConnectionString = previousColumnMappingConfig.DestinationConnectionString, SourceFullTableName = previousColumnMappingConfig.DestinationFullTableName, SourceInstance = previousColumnMappingConfig.DestinationLinkedInstance, DestinationConnectionString = columnMappingConfig.DestinationConnectionString, DestinationFullTableName = columnMappingConfig.DestinationFullTableName, DestinationInstance = columnMappingConfig.DestinationLinkedInstance, MappedColumns = columnMappingConfig.ForeignKeyMapping.Select(m => new ColumnPair(m[0], m[1])).ToList() }); } } mappedTable.MappedColumnPairsOutside = columnMapping; mappedTablesOutside.Add(mappedTable); } return(mappedTablesOutside); }
DbArchiveRecord InsertReference(MappedTable <DbArchiveRecord> table, IReferenceJson reference, DateTime lastFetchedUtc) { DbArchiveRecord archiveRecord = new DbArchiveRecord(); archiveRecord.Id = reference.Id; archiveRecord.LastFetchedUtc = lastFetchedUtc; archiveRecord.Json = reference.RawJson; Mapper.InsertRecord(table, archiveRecord, SQLiteConflictResolution.Replace); return(archiveRecord); }