private void MigrateRecords(ColumnInfo deleteOn, string deleteValue) { var deleteOnColumnName = GetRAWColumnNameFullyQualified(deleteOn); using (var con = _raw.Server.GetConnection()) { con.Open(); //if we are deleting on a child table we need to look up the primary table primary key (e.g. StudyInstanceUID) we should then migrate that data instead (for all tables) if (!deleteOn.Equals(_primaryTablePk)) { var oldValue = deleteValue; deleteValue = GetPrimaryKeyValueFor(deleteOn, deleteValue, con); deleteOnColumnName = GetRAWColumnNameFullyQualified(_primaryTablePk); if (deleteValue == null) { throw new Exception("Primary key value not found for " + oldValue); } _job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "Corresponding primary key is '" + deleteValue + "' ('" + deleteOnColumnName + "')")); } //pull all records that we must isolate in all joined tables Dictionary <TableInfo, DataTable> toPush = new Dictionary <TableInfo, DataTable>(); foreach (TableInfo tableInfo in TablesToIsolate) { toPush.Add(tableInfo, PullTable(tableInfo, con, deleteOnColumnName, deleteValue)); } //push the results to isolation foreach (KeyValuePair <TableInfo, DataTable> kvp in toPush) { var toDatabase = IsolationDatabase.Discover(DataAccessContext.DataLoad); var toTable = toDatabase.ExpectTable(GetIsolationTableName(kvp.Key)); using (var bulkInsert = toTable.BeginBulkInsert()) bulkInsert.Upload(kvp.Value); } foreach (TableInfo t in TablesToIsolate.Reverse()) { DeleteRows(t, deleteOnColumnName, deleteValue, con); } } }
private void MigrateRecords(ColumnInfo deleteOn, object[] deleteValues) { var deleteOnColumnName = GetRAWColumnNameFullyQualified(deleteOn); using (var con = _raw.Server.GetConnection()) { con.Open(); //if we are deleting on a child table we need to look up the primary table primary key (e.g. StudyInstanceUID) we should then migrate that data instead (for all tables) if (!deleteOn.Equals(_primaryTablePk)) { deleteValues = GetPrimaryKeyValuesFor(deleteOn, deleteValues, con); deleteOnColumnName = GetRAWColumnNameFullyQualified(_primaryTablePk); } //pull all records that we must isolate in all joined tables Dictionary <TableInfo, DataTable> toPush = new Dictionary <TableInfo, DataTable>(); foreach (TableInfo tableInfo in TablesToIsolate) { toPush.Add(tableInfo, PullTable(tableInfo, con, deleteOnColumnName, deleteValues)); } //push the results to isolation foreach (KeyValuePair <TableInfo, DataTable> kvp in toPush) { var toDatabase = IsolationDatabase.Discover(DataAccessContext.DataLoad); var toTable = toDatabase.ExpectTable(GetIsolationTableName(kvp.Key)); using (var bulkInsert = toTable.BeginBulkInsert()) bulkInsert.Upload(kvp.Value); } foreach (TableInfo t in TablesToIsolate.Reverse()) { DeleteRows(t, deleteOnColumnName, deleteValues, con); } con.Close(); } }
public void TestEquality() { Tuple<string, string, string, string, string>[] tests = { Tuple.Create("", "", "", "", ""), Tuple.Create("name","", "","", ""), Tuple.Create("name","db", "", "", ""), Tuple.Create("name","db", "table", "", ""), Tuple.Create("name","db", "table", "column", ""), Tuple.Create("name","db", "table", "column", "Variant"), }; Assert.False(new ColumnInfo("", "", "", "", "").Equals(null)); Assert.False(new ColumnInfo("", "", "", "", "").Equals(new Object())); for (int i = 0; i < tests.Length; i++) { for (int j = 0; j < tests.Length; j++) { var fst = new ColumnInfo(tests[i].Item1, tests[i].Item2, tests[i].Item3, tests[i].Item4, tests[i].Item5); var snd = new ColumnInfo(tests[j].Item1, tests[j].Item2, tests[j].Item3, tests[j].Item4, tests[j].Item5); if (i == j) { Assert.True(fst.Equals(fst)); Assert.True(snd.Equals(snd)); Assert.Equal(fst, snd); Assert.True(fst == snd); Assert.False(fst != snd); } else { Assert.NotEqual(fst, snd); Assert.False(fst == snd); Assert.True(fst != snd); } } } }
public void TestEquality() { Tuple <string, string, string, string, string>[] tests = { Tuple.Create("", "", "", "", ""), Tuple.Create("name", "", "", "", ""), Tuple.Create("name", "db", "", "", ""), Tuple.Create("name", "db", "table", "", ""), Tuple.Create("name", "db", "table", "column", ""), Tuple.Create("name", "db", "table", "column", "Variant"), }; Assert.False(new ColumnInfo("", "", "", "", "").Equals(null)); Assert.False(new ColumnInfo("", "", "", "", "").Equals(new object())); for (int i = 0; i < tests.Length; i++) { for (int j = 0; j < tests.Length; j++) { var fst = new ColumnInfo(tests[i].Item1, tests[i].Item2, tests[i].Item3, tests[i].Item4, tests[i].Item5); var snd = new ColumnInfo(tests[j].Item1, tests[j].Item2, tests[j].Item3, tests[j].Item4, tests[j].Item5); if (i == j) { Assert.True(fst.Equals(fst)); Assert.True(snd.Equals(snd)); Assert.Equal(snd, fst); Assert.True(fst == snd); Assert.False(fst != snd); } else { Assert.NotEqual(fst, snd); Assert.False(fst == snd); Assert.True(fst != snd); } } } }