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(); } }