Example #1
0
        public void ForeignKeys()
        {
            InitDatabase();

            string sql = LoadEmbeddedResource("ForeignKeys.sql");
            using (var conn = OpenConnection(true))
            {
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                var factory = new SqlServerDatabaseFactory();
                var analyser = factory.CreateAnalyser();
                analyser.Connection = conn;
                analyser.FullAnalysis();
                var result = analyser.Structure;

                Assert.AreEqual(2, result.Tables.Count);
                var table = result.Tables.Find(t => t.Name == "Test2");
                Assert.AreEqual(1, table.ForeignKeys.Count);
                var fk = table.ForeignKeys[0];
                Assert.AreEqual("ID_TEST1", fk.RefColumns[0].RefColumn.Name);
                Assert.AreEqual("ID_TEST1", fk.Columns[0].RefColumn.Name);
                Assert.AreEqual("Test1", fk.RefTable.Name);
            }
        }
Example #2
0
        public void OneTable()
        {
            InitDatabase();

            string sql = LoadEmbeddedResource("OneTable.sql");
            using (var conn = OpenConnection(true))
            {
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                var factory = new SqlServerDatabaseFactory();
                var analyser = factory.CreateAnalyser();
                analyser.Connection = conn;
                analyser.FullAnalysis();
                var result = analyser.Structure;
                Assert.AreEqual(1, result.Tables.Count);
                var table = result.Tables[0];
                Assert.AreEqual(2, table.Columns.Count);
                Assert.AreEqual("ID", table.Columns[0].Name);
                Assert.AreEqual("Name", table.Columns[1].Name);
                Assert.AreEqual(true, table.Columns[0].AutoIncrement);
                Assert.IsNotNull(table.PrimaryKey);
            }
        }
Example #3
0
        public async Task GetMapForTypeWithParentAsync()
        {
            // Arrange
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=AdventureWorks2017;integrated security=yes;");

            // Act
            var mapForName = database.DatabaseTypeMaps.FirstOrDefault(item => item.DatabaseType == "Name");

            var parentType = mapForName.GetParentType(database.DatabaseTypeMaps);

            // Assert
            Assert.False(mapForName == null);
            Assert.False(parentType == null);
            Assert.True(parentType.GetClrType() == typeof(string));
        }
Example #4
0
        public void ImportNorthwindTablesAndViews()
        {
            // Arrange

            // Act
            var database = SqlServerDatabaseFactory
                           .ImportTablesAndViews("server=(local);database=Northwind;integrated security=yes;",
                                                 "dbo.Orders",
                                                 "dbo.Order Details",
                                                 "dbo.Category Sales for 1997",
                                                 "dbo.Product Sales for 1997");

            // Assert
            Assert.True(database.Tables.Count == 2);
            Assert.True(database.Views.Count == 2);
        }
        /// <summary>
        /// Adds an extended property for database object
        /// </summary>
        /// <param name="databaseFactory">Instance of <see cref="SqlServerDatabaseFactory"/> class</param>
        /// <param name="view">Instance of <see cref="View"/> class</param>
        /// <param name="name">Extended property name</param>
        /// <param name="value">Extended property value</param>
        public static void AddExtendedProperty(this SqlServerDatabaseFactory databaseFactory, IView view, string name, string value)
        {
            using (var connection = databaseFactory.GetConnection())
            {
                connection.Open();

                var repository = new ExtendedPropertyRepository(connection);

                repository.AddExtendedProperty(new ExtendedProperty(name, "schema", view.Schema, "view", view.Name)
                {
                    Value = value
                });

                view.Description = value;
            }
        }
Example #6
0
        public void ImportTablesFromOnLineStoreDatabaseTest()
        {
            // Arrange and Act
            var database = SqlServerDatabaseFactory
                           .ImportTables(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=OnLineStore;integrated security=yes;", "Sales.OrderHeader", "Sales.OrderDetail");

            // Assert
            Assert.True(database.Tables.Count == 2);

            Assert.True(database.FindTable("Sales.OrderHeader").Columns.Count > 0);
            Assert.True(database.FindTable("Sales.OrderHeader").PrimaryKey != null);
            Assert.True(database.FindTable("Sales.OrderHeader").ForeignKeys.Count > 0);
            Assert.True(database.FindTable("Sales.OrderDetail").ForeignKeys.Count > 0);

            Assert.True(database.Views.Count == 0);
        }
        /// <summary>
        /// Adds an extended property for database object
        /// </summary>
        /// <param name="databaseFactory">Instance of <see cref="SqlServerDatabaseFactory"/> class</param>
        /// <param name="table">Instance of <see cref="Table"/> class</param>
        /// <param name="column">Instance of <see cref="Column"/> class</param>
        /// <param name="name">Extended property name</param>
        /// <param name="value">Extended property value</param>
        public static void AddExtendedProperty(this SqlServerDatabaseFactory databaseFactory, ITable table, Column column, string name, string value)
        {
            using (var connection = databaseFactory.GetConnection())
            {
                connection.Open();

                var repository = new ExtendedPropertyRepository(connection);

                repository.AddExtendedProperty(new ExtendedProperty(name, "schema", table.Schema, "table", table.Name, "column", column.Name)
                {
                    Value = value
                });

                column.Description = value;
            }
        }
        public void TestCollegeExportScript()
        {
            // Arrange
            var database = SqlServerDatabaseFactory.CreateWithDefaults("College");

            var student = database
                          .DefineEntity(new { StudentId = 0, FirstName = "", MiddleName = "", LastName = "" })
                          .SetNaming("Student")
                          .SetColumnFor(p => p.FirstName, type: "nvarchar", length: 10)
                          .SetColumnFor(p => p.MiddleName, type: "nvarchar", length: 10, nullable: true)
                          .SetColumnFor(p => p.LastName, type: "nvarchar", length: 10)
                          .SetIdentity(p => p.StudentId)
                          .SetPrimaryKey(e => e.StudentId)
                          .AddExtendedProperty(p => p.FirstName, "MS_Description", "First name")
                          .AddExtendedProperty(p => p.MiddleName, "MS_Description", "Middle name")
                          .AddExtendedProperty(p => p.LastName, "MS_Description", "Last name");

            var course = database
                         .DefineEntity(new { CourseId = 0, Name = "" })
                         .SetNaming("Course")
                         .SetColumnFor(e => e.Name, type: "nvarchar", length: 255)
                         .SetIdentity(e => e.CourseId, seed: 1000, increment: 1000)
                         .SetPrimaryKey(e => e.CourseId)
                         .AddUnique(e => e.Name);

            var courseStudent = database
                                .DefineEntity(new { CourseStudentId = 0, CourseId = 0, StudentId = 0 })
                                .SetNaming("CourseStudent")
                                .SetIdentity(p => p.CourseStudentId)
                                .SetPrimaryKey(p => p.CourseStudentId)
                                .AddUnique(p => new { p.CourseId, p.StudentId })
                                .AddForeignKey(p => p.CourseId, course.Table)
                                .AddForeignKey(p => p.StudentId, student.Table);

            // Act

            var codeBuilder = new SqlServerDatabaseScriptCodeBuilder
            {
                Database        = database,
                OutputDirectory = "C:\\Temp\\CatFactory.SqlServer",
                ForceOverwrite  = true
            };

            codeBuilder.CreateFile();

            // Assert
        }
Example #9
0
        public void ImportWithLoggerStoreTablesTest()
        {
            // Arrange
            var logger = LoggerMocker.GetLogger <SqlServerDatabaseFactory>();

            // Act
            var database = SqlServerDatabaseFactory
                           .ImportTables(
                logger,
                "server=(local);database=Store;integrated security=yes;",
                "Sales.Order",
                "Sales.OrderDetail");

            // Assert
            Assert.True(database.Tables.Count == 2);
            Assert.True(database.Views.Count == 0);
        }
Example #10
0
        public void ImportOnLineStoreDatabaseTest()
        {
            // Arrange and Act
            var database = SqlServerDatabaseFactory
                           .Import(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=OnLineStore;integrated security=yes;");

            // Assert
            Assert.True(database.Tables.Count > 0);

            Assert.True(database.FindTable("Warehouse.Product").Columns.Count > 0);
            Assert.True(database.FindTable("Warehouse.Product").PrimaryKey != null);
            Assert.True(database.FindTable("Warehouse.Product").ForeignKeys.Count > 0);

            Assert.True(database.Views.Count > 0);

            Assert.True(database.FindView("Sales.OrderSummary").Columns.Count > 0);
        }
        public async Task ImportOnlineStoreDatabaseAsync()
        {
            // Arrange and Act
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=OnlineStore;integrated security=yes;");

            // Assert
            Assert.True(database.Tables.Count > 0);

            Assert.True(database.FindTable("Warehouse.Product").Columns.Count > 0);
            Assert.True(database.FindTable("Warehouse.Product").PrimaryKey != null);
            Assert.True(database.FindTable("Warehouse.Product").ForeignKeys.Count > 0);

            Assert.True(database.Views.Count > 0);

            Assert.True(database.FindView("Sales.OrderSummary").Columns.Count > 0);
        }
Example #12
0
        public void ImportTablesAndViewsFromNorthwindTest()
        {
            // Arrange and Act
            var database = SqlServerDatabaseFactory
                           .ImportTablesAndViews("server=(local);database=Northwind;integrated security=yes;",
                                                 "dbo.Orders",
                                                 "dbo.Order Details",
                                                 "dbo.Category Sales for 1997",
                                                 "dbo.Product Sales for 1997");

            // Assert
            Assert.True(database.Tables.Count == 2);
            Assert.True(database.FindTable("dbo.Orders").Columns.Count > 0);
            Assert.True(database.FindTable("dbo.Orders").PrimaryKey != null);

            Assert.True(database.Views.Count == 2);
        }
Example #13
0
        public void TestProjectSelectionScope()
        {
            // Arrange

            // Import database
            var database = SqlServerDatabaseFactory
                           .Import(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=OnLineStore;integrated security=yes;", "dbo.sysdiagrams");

            // Create instance of Entity Framework Core project
            var project = new EntityFrameworkCoreProject
            {
                Name            = "OnLineStore",
                Database        = database,
                OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\OnLineStore"
            };

            // Act

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite   = true;
                settings.ConcurrencyToken = "Timestamp";
                settings.AuditEntity      = new AuditEntity
                {
                    CreationUserColumnName       = "CreationUser",
                    CreationDateTimeColumnName   = "CreationDateTime",
                    LastUpdateUserColumnName     = "LastUpdateUser",
                    LastUpdateDateTimeColumnName = "LastUpdateDateTime"
                };
            });

            project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true);

            var orderHeader = database.FindTable("Sales.OrderHeader");

            var selectionForOrder = project.GetSelection(orderHeader);

            // Assert

            Assert.True(project.Selections.Count == 2);

            Assert.True(project.GlobalSelection().Settings.EntitiesWithDataContracts == false);
            Assert.True(selectionForOrder.Settings.EntitiesWithDataContracts == true);
        }
Example #14
0
        public void ProjectScaffoldingFromNorthwindDatabase()
        {
            // Import database
            var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger())
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString       = "server=(local);database=Northwind;integrated security=yes;",
                    ImportScalarFunctions  = true,
                    ImportTableFunctions   = true,
                    ImportStoredProcedures = true,
                    Exclusions             =
                    {
                        "dbo.sp_alterdiagram",
                        "dbo.sp_creatediagram",
                        "dbo.sp_dropdiagram",
                        "dbo.sp_helpdiagramdefinition",
                        "dbo.sp_helpdiagrams",
                        "dbo.sp_renamediagram",
                        "dbo.sp_upgraddiagrams",
                        "dbo.sysdiagrams",
                        "dbo.fn_diagramobjects"
                    }
                }
            };

            var database = databaseFactory.Import();

            // Create instance of Dapper Project
            var project = DapperProject.Create("Northwind.Core", database, @"C:\Temp\CatFactory.Dapper\Northwind.Core");

            // Apply settings for project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            project.Selection("dbo.Ten Most Expensive Products", settings => settings.UseStringBuilderForQueries = false);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public void ProjectScaffoldingFromAdventureWorksDatabaseTest()
        {
            // Import database
            var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger())
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString      = "server=(local);database=AdventureWorks2017;integrated security=yes;",
                    ImportTableFunctions  = true,
                    ImportScalarFunctions = true,
                    Exclusions            =
                    {
                        "dbo.sysdiagrams"
                    },
                    ExclusionTypes =
                    {
                        "geography"
                    }
                }
            };

            var database = databaseFactory.Import();

            // Create instance of Dapper Project
            var project = new DapperProject
            {
                Name            = "AdventureWorks.Core",
                Database        = database,
                OutputDirectory = @"C:\Temp\CatFactory.Dapper\AdventureWorks.Core"
            };

            // Apply settings for project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            project.Selection("Sales.SalesOrderHeader", settings => settings.AddPagingForGetAllOperation = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Example #16
0
        public void ProjectScaffoldingFromAdventureWorksDatabaseTest()
        {
            // Import database

            var factory = new SqlServerDatabaseFactory(LoggerMocker.GetLogger <SqlServerDatabaseFactory>())
            {
                ConnectionString = "server=(local);database=AdventureWorks2012;integrated security=yes;",
                ImportSettings   = new DatabaseImportSettings
                {
                    Exclusions = new List <string> {
                        "dbo.sysdiagrams"
                    },
                    ExclusionTypes = new List <string> {
                        "geography"
                    },
                    ImportTableFunctions = true
                }
            };

            var database = factory.Import();

            // Create instance of Dapper Project
            var project = new DapperProject
            {
                Name            = "AdventureWorks",
                Database        = database,
                OutputDirectory = @"C:\Temp\CatFactory.Dapper\AdventureWorks.Dapper.API\src\AdventureWorks.Dapper.API"
            };

            // Apply settings for project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite = true;
            });

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Example #17
0
        public void ImportWideWorldImportersDatabase()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString = "server=(local);database=WideWorldImporters;integrated security=yes;"
                }
            };

            // Act
            var database = databaseFactory.Import();

            // Assert
            Assert.True(database.FindTable("Warehouse.StockItems").Columns.Count > 0);
            Assert.True(database.FindTable("Warehouse.StockItems")["Tags"].Computed == "yes");
            Assert.True(database.FindTable("Warehouse.StockItems").Defaults.Count > 0);
        }
        public async Task ImportNorthwindDatabaseAsync()
        {
            // Arrange and Act
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=Northwind;integrated security=yes;", "dbo.ChangeLog");

            // Assert
            Assert.True(database.Tables.Count > 0);

            Assert.True(database.FindTable("dbo.ChangeLog") == null);
            Assert.True(database.FindTable("dbo.Products").Columns.Count > 0);
            Assert.True(database.FindTable("dbo.Products").PrimaryKey != null);
            Assert.True(database.FindTable("dbo.Products").ForeignKeys.Count > 0);
            Assert.True(database.FindTable("dbo.Products").Defaults.Count > 0);
            Assert.True(database.FindTable("dbo.Products").Checks.Count > 0);

            Assert.True(database.Views.Count > 0);

            Assert.True(database.FindView("dbo.Invoices").Columns.Count > 0);
        }
        public void TestDropExtendedPropertiesForColumnFromView()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString   = "server=(local);database=Store;integrated security=yes;",
                    ExtendedProperties =
                    {
                        "MS_Description"
                    }
                }
            };

            // Act
            var database = databaseFactory.Import();
            var view     = database.FindView("HumanResources.EmployeeInfo");

            databaseFactory.DropExtendedPropertyIfExists(view, view.GetColumn("EmployeeName"), "MS_Description");
        }
        public void GenerateProceduresFromExistingDatabaseTest()
        {
            // Arrange
            var database = SqlServerDatabaseFactory.Import("server=(local);database=OnLineStore;integrated security=yes;");

            // Act
            foreach (var table in database.Tables)
            {
                var codeBuilder = new SqlStoredProcedureCodeBuilder
                {
                    Database        = database,
                    Table           = table,
                    OutputDirectory = "C:\\Temp\\CatFactory.SqlServer\\StoredProceduresFromExistingDatabase",
                    ForceOverwrite  = true
                };

                codeBuilder.CreateFile();
            }

            // Assert
        }
        public void ImportAdventureWorksDatabase()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger())
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString       = "server=(local);database=AdventureWorks2017;integrated security=yes;",
                    ImportStoredProcedures = true,
                    ImportScalarFunctions  = true,
                    ImportTableFunctions   = true,
                    ExclusionTypes         =
                    {
                        "geography"
                    }
                }
            };

            // Act
            var database = databaseFactory.Import();

            // Assert
            foreach (var table in database.Tables)
            {
                var flag = table.Columns.FirstOrDefault(item => item.Name == "SpatialLocation") == null ? false : true;

                Assert.False(flag);
            }

            Assert.True(database.FindTable("Sales.SalesOrderHeader").Columns.Count > 0);
            Assert.True(database.FindTable("Sales.SalesOrderHeader").Indexes.Count > 0);
            Assert.True(database.FindTable("Sales.SalesOrderHeader").PrimaryKey != null);
            Assert.True(database.FindTable("Sales.SalesOrderHeader").ForeignKeys.Count > 0);

            Assert.True(database.FindView("Production.vProductAndDescription").Columns.Count > 0);
            Assert.True(database.FindView("Production.vProductAndDescription").Indexes.Count > 0);

            Assert.True(database.TableFunctions.FirstOrDefault(item => item.FullName == "dbo.ufnGetContactInformation").Parameters.Count == 1);
            Assert.True(database.StoredProcedures.FirstOrDefault(item => item.FullName == "HumanResources.uspUpdateEmployeeHireInfo").FirstResultSetsForObject.Count == 0);
        }
Example #22
0
        public void ProjectScaffoldingForWideWorldImportersDatabaseTest()
        {
            // Create database factory
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString     = "server=(local);database=WideWorldImporters;integrated security=yes;",
                    ImportTableFunctions = true,
                    Exclusions           =
                    {
                        "dbo.sysdiagrams",
                        "dbo.fn_diagramobjects"
                    }
                }
            };

            // Import database
            var database = databaseFactory.Import();

            // Create instance of Entity Framework Core project
            var project = new EntityFrameworkCoreProject
            {
                Name            = "WideWorldImporters.Core",
                Database        = database,
                OutputDirectory = @"C:\Temp\CatFactory.EntityFrameworkCore\WideWorldImporters.Core"
            };

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public void TestDropExtendedPropertiesForDatabase()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString   = "server=(local);database=Store;integrated security=yes;",
                    ExtendedProperties =
                    {
                        "MS_Description"
                    }
                }
            };

            // Act
            var database = databaseFactory.Import();

            databaseFactory.DropExtendedPropertyIfExists("MS_Description");

            // Assert
        }
        public void TestAddExtendedPropertiesForColumnFromView()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString   = "server=(local);database=Store;integrated security=yes;",
                    ExtendedProperties =
                    {
                        "MS_Description"
                    }
                }
            };

            // Act
            var database = databaseFactory.Import();
            var view     = database.FindView("Sales.OrderSummary");

            databaseFactory.DropExtendedPropertyIfExists(view, view.GetColumn("CustomerName"), "MS_Description");
            databaseFactory.AddExtendedProperty(view, view.GetColumn("CustomerName"), "MS_Description", "Name for customer (CompanyName)");
        }
Example #25
0
        public async Task ScaffoldProceduresFromExistingDatabaseAsync()
        {
            // Arrange
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=OnlineStore;integrated security=yes;");

            // Act
            foreach (var table in database.Tables)
            {
                var codeBuilder = new SqlStoredProcedureCodeBuilder
                {
                    Database        = database,
                    Table           = table,
                    OutputDirectory = @"C:\Temp\CatFactory.SqlServer\StoredProceduresFromExistingDatabase",
                    ForceOverwrite  = true
                };

                codeBuilder.CreateFile();
            }

            // Assert
        }
        public void ProjectScaffoldingWithDataAnnotationsForOnlineStoreDatabaseTest()
        {
            // Import database
            var database = SqlServerDatabaseFactory
                           .Import(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams");

            // Create instance of Entity Framework Core Project
            var project = new EntityFrameworkCoreProject
            {
                Name            = "OnlineStoreWithDataAnnotations.Core",
                Database        = database,
                OutputDirectory = @"C:\Temp\CatFactory.EntityFrameworkCore\OnlineStoreWithDataAnnotations.Core"
            };

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite     = true;
                settings.UseDataAnnotations = true;
                settings.ConcurrencyToken   = "Timestamp";
                settings.AuditEntity        = new AuditEntity
                {
                    CreationUserColumnName       = "CreationUser",
                    CreationDateTimeColumnName   = "CreationDateTime",
                    LastUpdateUserColumnName     = "LastUpdateUser",
                    LastUpdateDateTimeColumnName = "LastUpdateDateTime"
                };
            });

            project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public void SerializeAdventureWorks2017DatabaseToJsonTest()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString   = "server=(local);database=AdventureWorks2017;integrated security=yes;MultipleActiveResultSets=true;",
                    ExtendedProperties = { "MS_Description" },
                    Exclusions         = { "dbo.EventLog" }
                }
            };

            // Act
            var database = databaseFactory.Import();

            var output = JsonConvert.SerializeObject(database, Formatting.Indented);

            File.WriteAllText("C:\\Temp\\CatFactory.SqlServer\\AdventureWorks2017.json", output);

            // Assert
        }
        public void ProjectScaffoldingFromWideWorldImportersDatabaseTest()
        {
            // Import database
            var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger())
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString = "server=(local);database=WideWorldImporters;integrated security=yes;",
                    Exclusions       =
                    {
                        "dbo.sysdiagrams"
                    }
                }
            };

            var database = databaseFactory.Import();

            // Create instance of Dapper Project
            var project = new DapperProject
            {
                Name            = "WideWorldImporters.Core",
                Database        = database,
                OutputDirectory = @"C:\Temp\CatFactory.Dapper\WideWorldImporters.Core"
            };

            // Apply settings for project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            project.Selection("Warehouse.StockItems", settings => settings.AddPagingForGetAllOperation = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Example #29
0
        public async Task <IActionResult> ImportDatabaseAsync([FromBody] ImportDatabaseRequest request)
        {
            Logger?.LogDebug("'{0}' has been invoked", nameof(ImportDatabaseAsync));

            var response = new ImportDatabaseResponse();

            try
            {
                var databaseFactory = new SqlServerDatabaseFactory
                {
                    DatabaseImportSettings = new DatabaseImportSettings
                    {
                        Name               = request.Name,
                        ConnectionString   = request.ConnectionString,
                        ImportTables       = request.ImportTables,
                        ImportViews        = request.ImportViews,
                        ExtendedProperties =
                        {
                            Tokens.MS_DESCRIPTION
                        }
                    }
                };

                var db = databaseFactory.Import();

                await DbService.SerializeAsync(databaseFactory.DatabaseImportSettings);

                await DbService.SerializeAsync(db);

                response.Message = "The database was imported successfully";
            }
            catch (Exception ex)
            {
                response.SetError(ex, Logger);
            }

            return(response.ToHttpResponse());
        }
Example #30
0
        public void FullImportNorthwindDatabaseTest()
        {
            // Arrange
            var logger          = LoggerMocker.GetLogger <SqlServerDatabaseFactory>();
            var databaseFactory = new SqlServerDatabaseFactory(logger)
            {
                ConnectionString = "server=(local);database=Northwind;integrated security=yes;MultipleActiveResultSets=true;",
                ImportSettings   = new DatabaseImportSettings
                {
                    ImportStoredProcedures = true,
                    ImportTableFunctions   = true,
                    ImportScalarFunctions  = true
                }
            };

            // Act
            var database = databaseFactory.Import();

            // Assert
            Assert.True(database.Tables.Count > 0);
            Assert.True(database.Views.Count > 0);
            Assert.True(database.StoredProcedures.Count > 0);
        }
        public void TestDropExtendedPropertiesForColumnFromTable()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString   = "server=(local);database=Store;integrated security=yes;",
                    ExtendedProperties =
                    {
                        "MS_Description"
                    }
                }
            };

            // Act
            var database = databaseFactory.Import();
            var table    = database.FindTable("Production.Product");

            databaseFactory.DropExtendedPropertyIfExists(table, table.GetColumn("ProductID"), "MS_Description");

            // Assert
        }
        public async Task ImportWideWorldImportersDatabaseAsync()
        {
            // Arrange
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString = "server=(local);database=WideWorldImporters;integrated security=yes;",
                    ImportSequences  = true
                }
            };

            // Act
            var database = (SqlServerDatabase)await databaseFactory.ImportAsync();

            // Assert
            Assert.True(database.FindTable("Warehouse.StockItems").Columns.Count > 0);
            Assert.True(database.FindTable("Warehouse.StockItems").Defaults.Count > 0);
            Assert.True(database.FindTable("Warehouse.StockItems")["Tags"].Computed == "yes");
            Assert.False(database.FindTable("Warehouse.StockItems")["StockItemID"].ImportBag.ComputedExpression == null);

            Assert.True(database.Sequences.Count > 0);
        }