aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs')
-rw-r--r--Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs27
1 files changed, 27 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
index 7883f9cc8..79d3857ad 100644
--- a/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
+++ b/Software/Visual_Studio/Tango.Synchronization/Local/LocalDBComparer.cs
@@ -72,6 +72,33 @@ namespace Tango.Synchronization.Local
foreach (var masterTable in overwrite_tables)
{
LogManager.Log("Generating table overwrite difference for table " + masterTable.TableName);
+
+ var slaveTable = SlaveSQL.Tables.SingleOrDefault(x => x.TableName == masterTable.TableName); //Get matching slave table on slave db.
+
+ if (slaveTable == null) //Table not found on slave.
+ {
+ LogManager.Log("Table not found on slave, adding difference.");
+ //Clone table from slave db to master db including records!
+ diffs.Add(new Diff(DiffAction.AddTableToSlave, String.Format("Add table {0} to slave", masterTable.TableName), () => SlaveSQL.CloneTableFrom(MasterSQL, masterTable), SlaveSQL.GetCloneTableFromCommand(MasterSQL, masterTable)));
+ continue;
+ }
+
+ foreach (DataColumn masterColumn in masterTable.Columns)
+ {
+ LogManager.Log("Searching for column " + masterColumn.ColumnName + " on slave...");
+
+ var slaveColumn = slaveTable.Columns[masterColumn.ColumnName]; //Get matching slave column on slave table.
+
+ if (slaveColumn == null) //Slave column not found.
+ {
+ LogManager.Log("Column not found on slave, adding difference.");
+ //Add column to slave table.
+ diffs.Add(new Diff(DiffAction.AddColumnToSlave, String.Format("Add column {0} to slave table", masterColumn.ColumnName), () => SlaveSQL.AddColumn(masterTable, masterColumn), SlaveSQL.GetAddColumnCommand(masterTable, masterColumn)));
+ }
+
+ LogManager.Log("Column found.");
+ }
+
diffs.Add(new Diff(DiffAction.ReplaceTableDataInSlave, "Replace all rows on slave table " + masterTable.TableName, () =>
{