private void copyTable() { dropDestinationTable(); using (var cmd = _destination.CreateCommand()) { cmd.CommandText = _destinationTable; cmd.CommandType = CommandType.TableDirect; _operation.StatusDescription = "Services_Definitions_CreatingDestTable"; _operation.IsProgressIndeterminate = true; IDbCommand readCmd = _source.CreateCommand(); readCmd.CommandText = "SELECT * FROM " + _sourceExpression; DataTable schema = null; using (var sourceReader = readCmd.ExecuteReader()) { schema = sourceReader.GetSchemaTable(); sourceReader.Close(); } createDestinationTable(schema); int rowCount = countRowsToCopy(); using (var sourceReader = readCmd.ExecuteReader()) { _operation.StatusDescription = "Services_Definitions_LoadingTaxa"; _operation.IsProgressIndeterminate = false; var copyOperation = new ProgressInterval(_operation, _progressPerTaxonList, rowCount); using (var destinationResultSet = cmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable)) { while (sourceReader.Read()) { SqlCeUpdatableRecord record = destinationResultSet.CreateRecord(); object[] values = new object[sourceReader.FieldCount]; sourceReader.GetValues(values); record.SetValues(values); destinationResultSet.Insert(record); copyOperation.advance(); } destinationResultSet.Close(); } sourceReader.Close(); } } return; }
private List<IISOViewModel> buildQueryResult(IList<ISerializableObject> result) { CurrentOperation = new AsyncOperationInstance(true, null) { StatusDescription = "SelectFD_Status_FillingResults", Progress = 0, IsProgressIndeterminate = false, }; List<IISOViewModel> list = new List<IISOViewModel>(result.Count()); if (result.Count() == 0) { sendNotification("SelectFD_ResultEmpty"); return list; } ProgressInterval localProgress = null; localProgress = new ProgressInterval(CurrentOperation, 100f, result.Count()); var conversionQuery = from obj in result select ISOStore.addOrRetrieveVMForISO(obj); foreach(var line in conversionQuery) { list.Add(line); if (localProgress != null) if (localProgress.IsCancelRequested) break; else localProgress.advance(); } return list; }