示例#1
0
        public override void Up()
        {
            //Now we need to check if we can actually do this because we won't be able to if there's data in there that is too long

            Execute.Code(database =>
            {
                var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database);

                var colLen = (SqlSyntax is MySqlSyntaxProvider)
                    ? database.ExecuteScalar <int?>(string.Format("select max(LENGTH({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key")))
                    : database.ExecuteScalar <int?>(string.Format("select max(datalength({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key")));

                if (colLen < 900 == false)
                {
                    return(null);
                }

                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                //if it exists we need to drop it first
                if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_key")))
                {
                    localContext.Delete.Index("IX_cmsDictionary_key").OnTable("cmsDictionary");
                }

                //we can apply the col length change
                localContext.Alter.Table("cmsDictionary")
                .AlterColumn("key")
                .AsString(450)
                .NotNullable();

                return(localContext.GetSql());
            });
        }
示例#2
0
        public override void Up()
        {
            Execute.Code(database =>
            {
                var userGroups = database.Fetch <UserGroupDto>(
                    new Sql().Select("*")
                    .From <UserGroupDto>(SqlSyntax)
                    .Where <UserGroupDto>(x => x.Alias == "admin" || x.Alias == "editor", SqlSyntax));

                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                foreach (var userGroup in userGroups)
                {
                    if (userGroup.DefaultPermissions.Contains('ï') == false)
                    {
                        userGroup.DefaultPermissions += "ï";
                        localContext.Update.Table("umbracoUserGroup")
                        .Set(new { userGroupDefaultPermissions = userGroup.DefaultPermissions })
                        .Where(new { id = userGroup.Id });
                    }
                }

                return(localContext.GetSql());
            });
        }
        public override void Up()
        {
            Execute.Code(database =>
            {
                //Now we need to check if we can actually do this because we won't be able to if there's data in there that is too long
                var colLen = (SqlSyntax is MySqlSyntaxProvider)
                    ? database.ExecuteScalar <int?>(string.Format("select max(LENGTH({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key")))
                    : database.ExecuteScalar <int?>(string.Format("select max(datalength({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key")));

                if (colLen < 900 == false && colLen != null)
                {
                    return(null);
                }

                var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(Context.Database);

                //make sure it doesn't already exist
                if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_key")) == false)
                {
                    var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                    //we can apply the index
                    localContext.Create.Index("IX_cmsDictionary_key").OnTable("cmsDictionary")
                    .OnColumn("key")
                    .Ascending()
                    .WithOptions()
                    .NonClustered();

                    return(localContext.GetSql());
                }

                return(null);
            });
        }
        public override void Up()
        {
            //Now we need to check if we can actually d6 this because we won't be able to if there's data in there that is too long
            //http://issues.umbraco.org/issue/U4-9758

            Execute.Code(database =>
            {
                var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database);

                var colLen = (SqlSyntax is MySqlSyntaxProvider)
                    ? database.ExecuteScalar <int?>("select max(LENGTH(LoginName)) from cmsMember")
                    : database.ExecuteScalar <int?>("select max(datalength(LoginName)) from cmsMember");

                if (colLen < 900 == false)
                {
                    return(null);
                }

                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                //if it exists we need to drop it first
                if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMember_LoginName")))
                {
                    localContext.Delete.Index("IX_cmsMember_LoginName").OnTable("cmsMember");
                }

                //we can apply the col length change
                localContext.Alter.Table("cmsMember")
                .AlterColumn("LoginName")
                .AsString(225)
                .NotNullable();

                return(localContext.GetSql());
            });
        }
示例#5
0
        public override void Up()
        {
            Execute.Code(database =>
            {
                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);
                // Some people seem to have a constraint in their DB instead of an index, we'd need to drop that one
                // See: https://our.umbraco.com/forum/using-umbraco-and-getting-started/93282-upgrade-from-711-to-712-fails
                var constraints = SqlSyntax.GetConstraintsPerTable(database).Distinct().ToArray();
                if (constraints.Any(x => x.Item2.InvariantEquals("IX_umbracoLanguage_languageISOCode")))
                {
                    localContext.Delete.UniqueConstraint("IX_umbracoLanguage_languageISOCode").FromTable("umbracoLanguage");
                    return(localContext.GetSql());
                }
                return(null);
            });

            Execute.Code(database =>
            {
                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                //Now check for indexes of that name and drop that if it exists
                var dbIndexes = SqlSyntax.GetDefinedIndexes(database)
                                .Select(x => new DbIndexDefinition(x)).ToArray();
                if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoLanguage_languageISOCode")))
                {
                    localContext.Delete.Index("IX_umbracoLanguage_languageISOCode").OnTable("umbracoLanguage");
                    return(localContext.GetSql());
                }
                return(null);
            });

            Alter.Table("umbracoLanguage")
            .AlterColumn("languageISOCode")
            .AsString(14)
            .Nullable();

            Create.Index("IX_umbracoLanguage_languageISOCode")
            .OnTable("umbracoLanguage")
            .OnColumn("languageISOCode")
            .Ascending()
            .WithOptions()
            .Unique();
        }
示例#6
0
        private string MigrationCode(Database database)
        {
            var umbracoRedirectUrlTableName = "umbracoRedirectUrl";

            var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

            var tables = SqlSyntax.GetTablesInSchema(database).ToArray();

            if (tables.InvariantContains(umbracoRedirectUrlTableName))
            {
                var columns = SqlSyntax.GetColumnsInSchema(database).ToArray();
                if (columns.Any(x => x.TableName.InvariantEquals(umbracoRedirectUrlTableName) && x.ColumnName.InvariantEquals("id") && x.DataType == "uniqueidentifier"))
                {
                    return(null);
                }
                localContext.Delete.Table(umbracoRedirectUrlTableName);
            }

            localContext.Create.Table(umbracoRedirectUrlTableName)
            .WithColumn("id").AsGuid().NotNullable().PrimaryKey("PK_" + umbracoRedirectUrlTableName)
            .WithColumn("createDateUtc").AsDateTime().NotNullable()
            .WithColumn("url").AsString(2048).NotNullable()
            .WithColumn("contentKey").AsGuid().NotNullable()
            .WithColumn("urlHash").AsString(40).NotNullable();

            localContext.Create.Index("IX_" + umbracoRedirectUrlTableName).OnTable(umbracoRedirectUrlTableName)
            .OnColumn("urlHash")
            .Ascending()
            .OnColumn("contentKey")
            .Ascending()
            .OnColumn("createDateUtc")
            .Descending()
            .WithOptions().NonClustered();

            localContext.Create.ForeignKey("FK_" + umbracoRedirectUrlTableName)
            .FromTable(umbracoRedirectUrlTableName).ForeignColumn("contentKey")
            .ToTable("umbracoNode").PrimaryColumn("uniqueID");

            return(localContext.GetSql());
        }
        public override void Up()
        {
            //Now we need to check if we can actually d6 this because we won't be able to if there's data in there that is too long
            //http://issues.umbraco.org/issue/U4-9758

            Execute.Code(database =>
            {
                var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database);

                var colLen = (SqlSyntax is MySqlSyntaxProvider)
                    ? database.ExecuteScalar <int?>("select max(LENGTH(LoginName)) from cmsMember")
                    : database.ExecuteScalar <int?>("select max(datalength(LoginName)) from cmsMember");

                if (colLen < 900 == false)
                {
                    return(null);
                }

                var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                //if an index exists on this table we need to drop it. Normally we'd check via index name but in some odd cases (i.e. Our)
                //the index name is something odd (starts with "mi_"). In any case, the index cannot exist if we want to alter the column
                //so we'll drop whatever index is there and add one with the correct name after.
                var loginNameIndex = dbIndexes.FirstOrDefault(x => x.TableName.InvariantEquals("cmsMember") && x.ColumnName.InvariantEquals("LoginName"));
                if (loginNameIndex != null)
                {
                    localContext.Delete.Index(loginNameIndex.IndexName).OnTable("cmsMember");
                }

                //we can apply the col length change
                localContext.Alter.Table("cmsMember")
                .AlterColumn("LoginName")
                .AsString(225)
                .NotNullable();

                return(localContext.GetSql());
            });
        }
示例#8
0
        public override void Up()
        {
            Execute.Code(database =>
            {
                var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database);

                //make sure it doesn't already exist
                if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsPropertyTypeAlias")) == false)
                {
                    var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

                    //we can apply the index
                    localContext.Create.Index("IX_cmsPropertyTypeAlias").OnTable("cmsPropertyType")
                    .OnColumn("Alias")
                    .Ascending()
                    .WithOptions()
                    .NonClustered();

                    return(localContext.GetSql());
                }

                return(null);
            });
        }
示例#9
0
        private string MigrationCode(Database database)
        {
            var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger);

            //Clear all stylesheet data if the tables exist
            var tables = SqlSyntax.GetTablesInSchema(Context.Database).ToArray();

            if (tables.InvariantContains("cmsStylesheetProperty"))
            {
                localContext.Delete.FromTable("cmsStylesheetProperty").AllRows();
                localContext.Delete.FromTable("umbracoNode").Row(new { nodeObjectType = new Guid(Constants.ObjectTypes.StylesheetProperty) });

                localContext.Delete.Table("cmsStylesheetProperty");
            }
            if (tables.InvariantContains("cmsStylesheet"))
            {
                localContext.Delete.FromTable("cmsStylesheet").AllRows();
                localContext.Delete.FromTable("umbracoNode").Row(new { nodeObjectType = new Guid(Constants.ObjectTypes.Stylesheet) });

                localContext.Delete.Table("cmsStylesheet");
            }

            return(localContext.GetSql());
        }