Example #1
0
File: Test.cs Project: herohut/elab
 public void TestCeDgml()
 {
     using (IRepository sourceRepository = new DB4Repository(chinookConnectionString))
     {
         var generator = new Generator4(sourceRepository, @"C:\temp\testChinook40.dgml");
         generator.GenerateSchemaGraph(chinookConnectionString);
     }
 }
Example #2
0
File: Test.cs Project: herohut/elab
 public void TestServerDgml()
 {
     using (IRepository sourceRepository = new  ServerDBRepository4(serverConnectionString))
     {
         var generator = new Generator4(sourceRepository, @"C:\temp\test2.dgml");
         generator.GenerateSchemaGraph(serverConnectionString);
     }
 }
Example #3
0
 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);
     }
 }
Example #4
0
 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>());
     }
 }
Example #5
0
File: Test.cs Project: herohut/elab
        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);
                }

            }
        }
Example #6
0
 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);
         }
     }
 }
Example #7
0
 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);
     }
 }
Example #8
0
File: Test.cs Project: herohut/elab
        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);
                }
            }
        }
Example #9
0
    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);
        }
    }
Example #10
0
        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);
                }
            }
        }
Example #11
0
        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);
        }
Example #12
0
        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"));
                }
            }
        }
Example #13
0
        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();
                }
            }
        }
Example #15
0
        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);
                }
            }
        }
Example #16
0
 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;
     }
 }
Example #17
0
        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;
                    }
                }
            }
        }
Example #18
0
 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);
     }
 }
Example #19
0
 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>());
     }
 }
Example #20
0
 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);
     }
 }
Example #21
0
 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);
     }
 }
Example #22
0
 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");
     }
 }
Example #23
0
 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);
     }
 }
Example #24
0
 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);
     }
 }
Example #25
0
 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>());
     }
 }
Example #26
0
 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>());
     }
 }
Example #27
0
 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;
     }
 }
Example #28
0
        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;
                }
            }
        }