public void TestCeDgml() { using (IRepository sourceRepository = new DB4Repository(chinookConnectionString)) { var generator = new Generator4(sourceRepository, @"C:\temp\testChinook40.dgml"); generator.GenerateSchemaGraph(chinookConnectionString); } }
public void TestServerDgml() { using (IRepository sourceRepository = new ServerDBRepository4(serverConnectionString)) { var generator = new Generator4(sourceRepository, @"C:\temp\test2.dgml"); generator.GenerateSchemaGraph(serverConnectionString); } }
public void TestServerExport() { string path = @"C:\temp\testAW2012.sqlce"; using (IRepository sourceRepository = new ServerDBRepository4(serverAWConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestServerExportDotInTable() { string path = @"C:\temp\API2012.sqlce"; using (IRepository sourceRepository = new ServerDBRepository4(serverApiTestConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.ExcludeTables(new List<string>()); } }
public void ExerciseEngineWithTable() { using (IRepository sourceRepository = new DB4Repository(sdfConnectionString)) { var generator = new Generator4(sourceRepository); using (IRepository targetRepository = new ServerDBRepository4(serverConnectionString)) { SqlCeDiff.CreateDiffScript(sourceRepository, targetRepository, generator, false); } } }
private static void CreateSqlDiffScript(string source, string target, string outputPath) { using (IRepository sourceRepository = new DB4Repository(source)) { var diffGenerator = new Generator4(sourceRepository); using (IRepository targetRepository = new DB4Repository(target)) { SqlCeDiff.CreateDiffScript(sourceRepository, targetRepository, diffGenerator); BuildDiffScript(diffGenerator.GeneratedScript, outputPath); } } }
public void TestServerMigration() { string path = @"C:\temp\testChinook40.sqlce"; using (IRepository sourceRepository = new DB4Repository(chinookConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.GenerateAllAndSave(true, false, false, false); } Assert.IsTrue(System.IO.File.Exists(path)); using (IRepository serverRepository = new ServerDBRepository4(migrateConnectionString)) { serverRepository.ExecuteSqlFile(path); } }
public void TestDiffNullRef() { string target = @"Data Source=C:\Data\SQLCE\Test\DiffNullRefDatabases\ArtistManager.sdf"; string source = @"Data Source=C:\Data\SQLCE\Test\DiffNullRefDatabases\ArtistManagerDesignDatabase.sdf"; using (IRepository sourceRepository = new DB4Repository(source)) { var generator = new Generator4(sourceRepository); using (IRepository targetRepository = new DB4Repository(target)) { SqlCeDiff.CreateDiffScript(sourceRepository, targetRepository, generator, false); } } }
private void AssertMsSqlToSqliteGeneratorContains(string createTableQuery, string tableName, string expectedSql) { // connect to database server string connectionString = @"Data Source=.\sqlexpress;Integrated Security=SSPI;"; // create a new random database name string databaseName = this.RandomString(10); using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { sqlConnection.Open(); while (sqlConnection.DatabaseExists(databaseName)) { // create a new random database name databaseName = this.RandomString(10); } using (TempDatabase tempDatabase = new TempDatabase(sqlConnection, databaseName)) { using (SqlConnection tempSqlConnection = new SqlConnection(tempDatabase.ConnectionString)) { tempSqlConnection.Open(); tempSqlConnection.Execute(createTableQuery); } string sql = null; using (var repository = new ServerDBRepository4(tempDatabase.ConnectionString, false)) { Generator4 generator = new Generator4( repository, null, false, false, true); generator.GenerateTableScript(tableName); sql = generator.GeneratedScript; } Assert.IsTrue(sql.Contains(expectedSql), sql); } } }
public override string GenerateCreateTableDdl([NotNull] DatabaseConnection databaseConnection, string database, string schema, [NotNull] string tableName) { if (databaseConnection == null) { throw new ArgumentNullException("databaseConnection"); } if (tableName == null) { throw new ArgumentNullException("tableName"); } var repo = new DB4Repository(databaseConnection.ConnectionString); var generator = new Generator4(repo); generator.GenerateTableCreate(tableName); return(generator.GeneratedScript); }
public void TestDataDiff() { string source = @"Data Source=C:\projects\ChinookPart2\Chinook40Modified.sdf"; string target = @"Data Source=C:\projects\ChinookPart2\Chinook40.sdf"; string modPath = @"C:\projects\ChinookPart2\Chinook40Modified.sdf"; if (File.Exists(modPath)) { File.Delete(modPath); } File.Copy(@"C:\projects\ChinookPart2\Chinook40.sdf", modPath); using (IRepository sourceRepository = new DB4Repository(source)) { sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 2;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 3;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 4;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 1000;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (100, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (200, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (300, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("UPDATE InvoiceLine SET [UnitPrice]= 99.99 WHERE InvoiceLineId = 20;" + System.Environment.NewLine + "GO"); using (IRepository targetRepository = new DB4Repository(target)) { var generator = new Generator4(targetRepository); var script = SqlCeDiff.CreateDataDiffScript(sourceRepository, "InvoiceLine", targetRepository, "InvoiceLine", generator); Assert.IsTrue(script.Contains("DELETE")); } } }
public void TestDataDiff() { string source = @"Data Source=C:\projects\ChinookPart2\Chinook40Modified.sdf"; string target = @"Data Source=C:\projects\ChinookPart2\Chinook40.sdf"; string modPath = @"C:\projects\ChinookPart2\Chinook40Modified.sdf"; if (File.Exists(modPath)) File.Delete(modPath); File.Copy(@"C:\projects\ChinookPart2\Chinook40.sdf", modPath); using (IRepository sourceRepository = new DB4Repository(source)) { sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 2;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 3;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 4;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("DELETE FROM InvoiceLine WHERE InvoiceLineId = 1000;" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (100, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (200, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql(@"INSERT INTO [InvoiceLine] ([InvoiceId],[TrackId],[UnitPrice],[Quantity]) VALUES (300, 500, 10.11, 1)" + System.Environment.NewLine + "GO"); sourceRepository.ExecuteSql("UPDATE InvoiceLine SET [UnitPrice]= 99.99 WHERE InvoiceLineId = 20;" + System.Environment.NewLine + "GO"); using (IRepository targetRepository = new DB4Repository(target)) { var generator = new Generator4(targetRepository); var script = SqlCeDiff.CreateDataDiffScript(sourceRepository, "InvoiceLine", targetRepository, "InvoiceLine", generator); Assert.IsTrue(script.Contains("DELETE")); } } }
protected void btnExport_Click(object sender, EventArgs e) { var builder = new DbConnectionStringBuilder() { ConnectionString = GlobalSettings.DbDSN }; if (builder.ContainsKey("datalayer")) { var dataLayer = builder["datalayer"].ToString(); if (string.Equals(dataLayer, "SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco", StringComparison.OrdinalIgnoreCase)) { builder.Remove("datalayer"); var sqlcePath = builder.ContainsKey("datasource") ? builder["datasource"].ToString() : builder["data source"].ToString(); // resolve the 'DataDirectory' if (builder.ConnectionString.Contains("|DataDirectory|")) { var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); if (!dataDirectory.EndsWith("\\")) { dataDirectory = string.Concat(dataDirectory, "\\"); } sqlcePath = sqlcePath.Replace("|DataDirectory|", dataDirectory); } // check if file exists if (!File.Exists(sqlcePath)) { return; // FAIL } // set-up some vars var datestamp = DateTime.UtcNow.ToString("_yyyyMMddHHmmss"); var fileInfo = new FileInfo(sqlcePath); var originalFileName = fileInfo.Name.Replace(fileInfo.Extension, string.Empty); var exportFileName = string.Concat(originalFileName, datestamp, ".sql"); var exportPath = Server.MapPath("~/App_Data/" + exportFileName); var tempPath = sqlcePath.Replace(fileInfo.Extension, string.Concat(datestamp, fileInfo.Extension)); // make a copy of the db File.Copy(sqlcePath, tempPath); // replace the conn string if (builder.ContainsKey("datasource")) { builder["datasource"] = tempPath; } else { builder["data source"] = tempPath; } // export db using (var repository = new DB4Repository(builder.ConnectionString)) { var generator = new Generator4(repository, exportPath); var scope = this.rblScope.SelectedValue.Equals("data") ? Scope.SchemaData : Scope.Schema; // save db script to file generator.ScriptDatabaseToFile(scope); } // delete the temp db File.Delete(tempPath); // get the bytes from the export script var bytes = File.ReadAllBytes(exportPath); // check if the export script should be zipped if (this.cbZip.Checked) { using (var zip = new ZipOutputStream(Response.OutputStream)) { var entry = new ZipEntry(ZipEntry.CleanName(exportFileName)); zip.PutNextEntry(entry); zip.Write(bytes, 0, bytes.Length); } // push the zip file to the browser Response.AddHeader("content-disposition", string.Concat("attachment; filename=", exportFileName, ".zip")); Response.ContentType = "application/zip"; } else { // push the export script to the browser Response.AddHeader("content-disposition", string.Concat("attachment; filename=", exportFileName)); Response.ContentType = "text/x-sql"; Response.BinaryWrite(bytes); } Response.Flush(); Response.End(); } } }
static int Main(string[] args) { if (args.Length < 2 || args.Length > 6) { PrintUsageGuide(); return(2); } else { try { string connectionString = args[0]; string outputFileLocation = args[1]; bool includeData = true; bool includeDataForServer = false; bool includeSchema = true; bool saveImageFiles = false; bool sqlAzure = false; bool sqlite = false; bool toExcludeTables = true; bool toIncludeTables = false; System.Collections.Generic.List <string> exclusions = new System.Collections.Generic.List <string>(); System.Collections.Generic.List <string> inclusions = new System.Collections.Generic.List <string>(); System.Collections.Generic.List <string> whereClauses = new System.Collections.Generic.List <string>(); System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); if (args[0].Equals("diff", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return(2); #else if (args.Length == 4) { using (var source = Helper.CreateRepository(args[1])) { using (var target = Helper.CreateRepository(args[2])) { var generator = Helper.CreateGenerator(source); SqlCeDiff.CreateDiffScript(source, target, generator, false); System.IO.File.WriteAllText(args[3], generator.GeneratedScript); return(0); } } } else { PrintUsageGuide(); return(2); } #endif } else if (args[0].Equals("dgml", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return(2); #endif if (args.Length == 3) { using (var source = Helper.CreateRepository(args[1])) { var generator = Helper.CreateGenerator(source, args[2]); generator.GenerateSchemaGraph(args[1]); } return(0); } else { PrintUsageGuide(); return(2); } } else if (args[0].Equals("wpdc", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return(2); #endif #if V40 PrintUsageGuide(); return(2); #else if (args.Length == 3) { using (var repo = Helper.CreateRepository(args[1])) { var dch = new DataContextHelper(); dch.GenerateWPDataContext(repo, args[1], args[2]); } return(0); } else { PrintUsageGuide(); return(2); } #endif } else { for (int i = 2; i < args.Length; i++) { if (args[i].Contains("dataonly")) { includeData = true; includeSchema = false; } if (args[i].Contains("dataonlyserver")) { includeData = true; includeDataForServer = true; includeSchema = false; } if (args[i].Contains("schemaonly")) { includeData = false; includeSchema = true; } if (args[i].Contains("saveimages")) { saveImageFiles = true; } if (args[i].Contains("sqlazure")) { sqlAzure = true; } if (args[i].Contains("sqlite")) { sqlite = true; } if (args[i].StartsWith("exclude:")) { ParseExclusions(exclusions, args[i], whereClauses); toExcludeTables = true; toIncludeTables = false; } if (args[i].StartsWith("include:")) { ParseInclusions(inclusions, args[i], whereClauses); toIncludeTables = true; toExcludeTables = false; } } using (IRepository repository = Helper.CreateRepository(connectionString)) { Console.WriteLine("Initializing...."); Helper.FinalFiles = outputFileLocation; #if V40 var generator = new Generator4(repository, outputFileLocation, sqlAzure, false, sqlite); #else var generator = new Generator(repository, outputFileLocation, sqlAzure, false, sqlite); #endif if (toExcludeTables) { generator.ExcludeTables(exclusions); } else if (toIncludeTables) { generator.IncludeTables(inclusions, whereClauses); } Console.WriteLine("Generating the tables...."); if (sqlite) { generator.GenerateSqlitePrefix(); } if (includeSchema) { #if V31 generator.GenerateTable(false); #else generator.GenerateTable(includeData); #endif } if (sqlite) { if (includeData) { Console.WriteLine("Generating the data...."); generator.GenerateTableContent(false); } Console.WriteLine("Generating the indexes...."); generator.GenerateIndex(); generator.GenerateSqliteSuffix(); } else { if (sqlAzure && includeSchema) { Console.WriteLine("Generating the primary keys (SQL Azure)...."); generator.GeneratePrimaryKeys(); } if (includeData) { Console.WriteLine("Generating the data...."); generator.GenerateTableContent(saveImageFiles); if (!includeSchema) // ie. DataOnly { Console.WriteLine("Generating IDENTITY reset statements...."); generator.GenerateIdentityResets(includeDataForServer); } } if (!sqlAzure && includeSchema) { Console.WriteLine("Generating the primary keys...."); generator.GeneratePrimaryKeys(); } if (includeSchema) { Console.WriteLine("Generating the indexes...."); generator.GenerateIndex(); Console.WriteLine("Generating the foreign keys...."); generator.GenerateForeignKeys(); } } Helper.WriteIntoFile(generator.GeneratedScript, outputFileLocation, generator.FileCounter, sqlite); } Console.WriteLine("Sent script to output file(s) : {0} in {1} ms", Helper.FinalFiles, (sw.ElapsedMilliseconds).ToString()); return(0); } } catch (System.Data.SqlServerCe.SqlCeException e) { Console.WriteLine(Helper.ShowErrors(e)); return(1); } catch (System.Data.SqlClient.SqlException es) { Console.WriteLine(Helper.ShowErrors(es)); return(1); } catch (Exception ex) { Console.WriteLine("Error: " + ex); return(1); } } }
public void TestServerExportUniqueIssue() { string path = @"C:\temp\E2E.sqlce"; using (IRepository sourceRepository = new ServerDBRepository4(E2EConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.ExcludeTables(new List<string>()); generator.GenerateTableScript("OneToOneSeparateFKDependent"); var test = generator.GeneratedScript; } }
private void RunMigration(string localDbPath, List <string> tablesToIgnoreOrAppend, string targetConnectionString, Scope scope, bool removeTempFiles) { using (var repository = new DB4Repository($"Data Source={localDbPath};Max Database Size=4000")) { var scriptRoot = Path.GetTempFileName(); var tempScript = scriptRoot + ".sqltb"; var generator = new Generator4(repository, tempScript); if (scope == Scope.DataOnlyForSqlServerIgnoreIdentity) { //Ignore all tables except the ones in tablesToAppend var tables = repository.GetAllTableNames(); var list = tables.Except(tablesToIgnoreOrAppend).ToList(); generator.ExcludeTables(list); } else { generator.ExcludeTables(tablesToIgnoreOrAppend.ToList()); } Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: Scripting SQL Compact database"); generator.ScriptDatabaseToFile(scope); Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: Done scripting SQL Compact database"); using (var serverRepository = new ServerDBRepository4(targetConnectionString)) { try { //Handles large exports also... if (File.Exists(tempScript)) // Single file { Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: Running script"); serverRepository.ExecuteSqlFile(tempScript); if (removeTempFiles) { TryDeleteFile(tempScript); } } else // possibly multiple files - tmp2BB9.tmp_0.sqlce { for (var i = 0; i < 400; i++) { var testFile = string.Format("{0}_{1}{2}", scriptRoot, i.ToString("D4"), ".sqltb"); if (File.Exists(testFile)) { Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: Running script"); serverRepository.ExecuteSqlFile(testFile); if (removeTempFiles) { TryDeleteFile(testFile); } } } } } catch (Exception ex) { CreateBlockFile(localDbPath, ex); throw; } } } }
public void TestCreateSQLiteTable() { using (IRepository sourceRepository = new SQLiteRepository(chinookSQLiteConnectionString)) { var generator = new Generator4(sourceRepository, null, false, false, true); generator.GenerateTableScript("Album"); var result = generator.GeneratedScript; var lines = Regex.Split(result, "\r\n|\r|\n"); Assert.IsTrue(lines.Length == 11); } }
public void TestServerExportConstrainsIssue() { string path = @"C:\temp\Baseball.sqlce"; using (IRepository sourceRepository = new ServerDBRepository4(BaseballTestConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.ExcludeTables(new List<string>()); } }
public void TestServerDgml() { using (IRepository sourceRepository = new ServerDBRepository4(serverConnectionString)) { var exclusions = new List<string>(); exclusions.Add("dbo.BuildVersion"); exclusions.Add("dbo.ErrorLog"); var generator = new Generator4(sourceRepository, @"C:\temp\test2.dgml"); generator.GenerateSchemaGraph(serverConnectionString, exclusions); } }
public void TestSQLiteNetCodeGenWithViews() { using (IRepository sourceRepository = new SQLiteRepository(infoConnectionString)) { var generator = new Generator4(sourceRepository, null, false, false, true); generator.GenerateSqliteNetModel("Test"); var result = generator.GeneratedScript; var lines = Regex.Split(result, "\r\n|\r|\n"); Assert.AreEqual(264, lines.Length); } }
public void TestSQLiteDataTypes() { //cloud_service_product_infos //;DateFormatString=yyyy-MM-dd HH:mm:ss zzz using (IRepository sourceRepository = new SQLiteRepository(@"Data Source=C:\Users\erik\Downloads\spiceworks_prod.db")) { var generator = new Generator4(sourceRepository, "sw.sql"); generator.GenerateTableCreate("alerts"); } }
public void TestSQLiteDateQuirk() { //cloud_service_product_infos //;DateFormatString=yyyy-MM-dd HH:mm:ss zzz using (IRepository sourceRepository = new SQLiteRepository(@"Data Source=C:\Users\erik\Downloads\spiceworks_prod.db")) { var generator = new Generator4(sourceRepository, "sw.sql"); generator.TruncateSQLiteStrings = true; generator.ScriptDatabaseToFile(Scope.DataOnly); } }
public void TestServerHierarchyIdSqlCe() { using (IRepository sourceRepository = new ServerDBRepository4(serverHIDConnectionString)) { var exclusions = new List<string>(); var generator = new Generator4(sourceRepository, @"C:\code\test2.sql"); generator.ExcludeTables(exclusions); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestGraphSortComplex() { using (IRepository sourceRepository = new DB4Repository(sdfConnectionString2)) { var generator = new Generator4(sourceRepository, @"C:\temp\testPZ.sqlce"); generator.ExcludeTables(new System.Collections.Generic.List<String>()); } }
public void TestGraphSortServer() { using (IRepository sourceRepository = new ServerDBRepository4(serverConnectionString)) { var generator = new Generator4(sourceRepository, @"C:\temp\testAMS40.sqlce"); generator.ExcludeTables(new System.Collections.Generic.List<String>()); } }
public void TestDataGenWithoutWhere() { using (IRepository sourceRepository = new DB4Repository(@"Data Source=c:\tmp\sqlce\Chinook.sdf")) { var generator = new Generator4(sourceRepository); generator.GenerateTableContent("Album", false); var script = generator.GeneratedScript; } }
static int Main(string[] args) { if (args.Length < 2 || args.Length > 6) { PrintUsageGuide(); return 2; } else { try { string connectionString = args[0]; string outputFileLocation = args[1]; bool includeData = true; bool includeSchema = true; bool saveImageFiles = false; bool sqlAzure = false; System.Collections.Generic.List<string> exclusions = new System.Collections.Generic.List<string>(); System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); if (args[0].Equals("diff", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return 2; #else if (args.Length == 4) { using (var source = Helper.CreateRepository(args[1])) { using (var target = Helper.CreateRepository(args[2])) { var generator = Helper.CreateGenerator(source); SqlCeDiff.CreateDiffScript(source, target, generator, false); System.IO.File.WriteAllText(args[3], generator.GeneratedScript); return 0; } } } else { PrintUsageGuide(); return 2; } #endif } else if (args[0].Equals("dgml", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return 2; #endif if (args.Length == 3) { using (var source = Helper.CreateRepository(args[1])) { var generator = Helper.CreateGenerator(source, args[2]); generator.GenerateSchemaGraph(args[1]); } return 0; } else { PrintUsageGuide(); return 2; } } else if (args[0].Equals("wpdc", StringComparison.OrdinalIgnoreCase)) { #if V31 PrintUsageGuide(); return 2; #endif #if V40 PrintUsageGuide(); return 2; #else if (args.Length == 3) { using (var repo = Helper.CreateRepository(args[1])) { var dch = new DataContextHelper(); dch.GenerateWPDataContext(repo, args[1], args[2]); } return 0; } else { PrintUsageGuide(); return 2; } #endif } else { for (int i = 2; i < args.Length; i++) { if (args[i].Contains("dataonly")) { includeData = true; includeSchema = false; } if (args[i].Contains("schemaonly")) { includeData = false; includeSchema = true; } if (args[i].Contains("saveimages")) saveImageFiles = true; if (args[i].Contains("sqlazure")) sqlAzure = true; if (args[i].StartsWith("exclude:")) ParseExclusions(exclusions, args[i]); } using (IRepository repository = Helper.CreateRepository(connectionString)) { Helper.FinalFiles = outputFileLocation; #if V40 var generator = new Generator4(repository, outputFileLocation, sqlAzure); #else var generator = new Generator(repository, outputFileLocation, sqlAzure); #endif generator.ExcludeTables(exclusions); Console.WriteLine("Generating the tables...."); #if V31 generator.GenerateTable(false); #else generator.GenerateTable(includeData); #endif if (sqlAzure && includeSchema) { Console.WriteLine("Generating the primary keys (SQL Azure)...."); generator.GeneratePrimaryKeys(); } if (includeData) { Console.WriteLine("Generating the data...."); generator.GenerateTableContent(saveImageFiles); } if (!sqlAzure && includeSchema) { Console.WriteLine("Generating the primary keys...."); generator.GeneratePrimaryKeys(); } if (includeSchema) { Console.WriteLine("Generating the indexes...."); generator.GenerateIndex(); Console.WriteLine("Generating the foreign keys...."); generator.GenerateForeignKeys(); } Helper.WriteIntoFile(generator.GeneratedScript, outputFileLocation, generator.FileCounter); } Console.WriteLine("Sent script to output file(s) : {0} in {1} ms", Helper.FinalFiles, (sw.ElapsedMilliseconds).ToString()); return 0; } } catch (System.Data.SqlServerCe.SqlCeException e) { Console.WriteLine(Helper.ShowErrors(e)); return 1; } catch (System.Data.SqlClient.SqlException es) { Console.WriteLine(Helper.ShowErrors(es)); return 1; } catch (Exception ex) { Console.WriteLine("Error: " + ex); return 1; } } }