private void bw_DoExportWork(object sender, DoWorkEventArgs e) { var parameters = e.Argument as List <object>; if (parameters == null) { return; } var source = parameters[0] as DatabaseInfo; var target = parameters[1] as DatabaseInfo; package.SetStatus("Starting export"); using (var repository = Helpers.RepositoryHelper.CreateRepository(source)) { var scriptRoot = Path.GetTempFileName(); var tempScript = scriptRoot + ".sqltb"; var generator = DataConnectionHelper.CreateGenerator(repository, tempScript, DatabaseType.SQLCE40); package.SetStatus("Scripting local database..."); if (source != null && (source.DatabaseType == DatabaseType.SQLite && Properties.Settings.Default.TruncateSQLiteStrings)) { generator.TruncateSQLiteStrings = true; } generator.ScriptDatabaseToFile(Scope.SchemaData); using (var serverRepository = Helpers.RepositoryHelper.CreateRepository(target)) { package.SetStatus("Exporting to server..."); //Handles large exports also... if (File.Exists(tempScript)) // Single file { serverRepository.ExecuteSqlFile(tempScript); } else // possibly multiple files - tmp2BB9.tmp_0.sqlce { var count = Directory.GetFiles(Path.GetDirectoryName(scriptRoot), Path.GetFileName(scriptRoot) + "*", SearchOption.AllDirectories).Count(); for (var i = 0; i < 400; i++) { package.SetProgress(null, 0, 0); var testFile = string.Format("{0}_{1}{2}", scriptRoot, i.ToString("D4"), ".sqltb"); if (File.Exists(testFile)) { serverRepository.ExecuteSqlFile(testFile); package.SetProgress("Exporting to server...", (uint)i + 1, (uint)count - 1); TryDeleteFile(testFile); } } package.SetStatus(null); } package.SetStatus("Export complete"); } } }
void bw_DoExportWork(object sender, DoWorkEventArgs e) { var parameters = e.Argument as List <object>; if (parameters != null && parameters.Count == 5) { var dbConnectionString = parameters[0] as string; var connectionString = parameters[1] as string; var tables = parameters[2] as List <string>; // ReSharper disable once AssignNullToNotNullAttribute var dbType = (DatabaseType)Enum.Parse(typeof(DatabaseType), parameters[3] as string); // ReSharper disable once AssignNullToNotNullAttribute var scope = (Scope)Enum.Parse(typeof(Scope), parameters[4] as string); var scriptRoot = Path.GetTempFileName(); var tempScript = scriptRoot + ".sqlce"; _package.SetStatus("Starting import"); using (var repository = Helpers.RepositoryHelper.CreateRepository(new DatabaseInfo { ConnectionString = connectionString, DatabaseType = DatabaseType.SQLServer })) { var generator = DataConnectionHelper.CreateGenerator(repository, tempScript, DatabaseType.SQLServer); generator.ExcludeTables(tables); _package.SetStatus("Scripting server database..."); generator.ScriptDatabaseToFile(scope); } _package.SetStatus("Importing data..."); using (var dbRepository = Helpers.RepositoryHelper.CreateRepository(new DatabaseInfo { ConnectionString = dbConnectionString, DatabaseType = dbType })) { //Handles large exports also... if (File.Exists(tempScript)) // Single file { dbRepository.ExecuteSqlFile(tempScript); TryDeleteFile(tempScript); } else // possibly multiple files - tmp2BB9.tmp_0.sqlce { var count = Directory.GetFiles(Path.GetDirectoryName(scriptRoot), Path.GetFileName(scriptRoot) + "*", SearchOption.AllDirectories).Count(); for (var i = 0; i < 400; i++) { var testFile = string.Format("{0}_{1}{2}", scriptRoot, i.ToString("D4"), ".sqlce"); if (File.Exists(testFile)) { dbRepository.ExecuteSqlFile(testFile); _package.SetProgress("Importing data...", (uint)i + 1, (uint)count - 1); TryDeleteFile(testFile); } } _package.SetStatus(null); } } } _package.SetStatus("Import complete"); }