public void NewTableTest(SqlEngineVersion version)
        {
            _sqlExecuterTestAdapter.Check(version);
            var dd = new TestDatabaseSimple();

            _sqlExecuterTestAdapter.InitializeAndCreate(version.UniqueName, dd);

            var context = new Context
            {
                Settings = TestHelper.GetDefaultTestSettings(version),
                Logger   = TestHelper.CreateLogger()
            };

            var migrationGenerator = SqlGeneratorFactory.CreateMigrationGenerator(version, context);

            var executer = _sqlExecuterTestAdapter.GetExecuter(version.UniqueName);

            var databaseMigrator = new DatabaseMigrator(executer, migrationGenerator);
            var tableNew         = new TableNew
            {
                SchemaAndTableName = "NewTableToMigrate"
            };

            ((SqlTable)tableNew).AddInt32("Id", false).SetPK().SetIdentity();

            new PrimaryKeyNamingDefaultStrategy().SetPrimaryKeyName(tableNew.Properties.OfType <PrimaryKey>().First());

            ((SqlTable)tableNew).AddNVarChar("Name", 100);

            dd.AddTable(tableNew);

            databaseMigrator.NewTable(tableNew);
        }
        public void FkCheckNoCheckTest()
        {
            var version = MsSqlVersion.MsSql2016;

            var dd = new TestDatabaseFk();

            dd.SetVersions(version.GetTypeMapper());
            Init(version, dd);

            var ddlReader = DataDefinitionReaderFactory.CreateDataDefinitionReader(
                SqlExecuterTestAdapter.ConnectionStrings[version.UniqueName]
                , SqlExecuterTestAdapter.GetContext(version), dd.GetSchemaNames().ToList());
            var ddInDatabase = ddlReader.GetDatabaseDefinition();

            var fk = dd.GetTable("Foreign").Properties.OfType <ForeignKey>().First();

            Assert.AreEqual("true", fk.SqlEngineVersionSpecificProperties[version, "Nocheck"]);

            fk.SqlEngineVersionSpecificProperties[version, "Nocheck"] = "false";

            var comparer = new Comparer(SqlExecuterTestAdapter.GetContext(version));
            var changes  = comparer.Compare(ddInDatabase, dd);

            _ = changes[0] as ForeignKeyChange;

            _ = new DatabaseMigrator(SqlExecuterTestAdapter.GetExecuter(version.UniqueName), SqlGeneratorFactory.CreateMigrationGenerator(version, SqlExecuterTestAdapter.GetContext(version)));

            // TODO change FK
            // databaseMigrator.
        }
        private static DatabaseMigrator ProcessAndGetMigrator(SqlEngineVersion version, DatabaseDefinitions dds, out List <IMigration> changes)
        {
            Init(version, dds.Original);

            var ddlReader    = DataDefinitionReaderFactory.CreateDataDefinitionReader(SqlExecuterTestAdapter.ConnectionStrings[version.UniqueName], SqlExecuterTestAdapter.GetContext(version), dds.Original.GetSchemaNames().ToList());
            var ddInDatabase = ddlReader.GetDatabaseDefinition();

            var comparer = new Comparer(SqlExecuterTestAdapter.GetContext(version));

            changes = comparer.Compare(ddInDatabase, dds.New);

            var databaseMigrator = new DatabaseMigrator(SqlExecuterTestAdapter.GetExecuter(version.UniqueName), SqlGeneratorFactory.CreateMigrationGenerator(version, SqlExecuterTestAdapter.GetContext(version)));

            return(databaseMigrator);
        }