예제 #1
0
        public static void HandleChange(IDatabaseService database, string tablename, EJ.DBColumn originalColumn)
        {
            tablename = tablename.ToLower();

            var column = (EJ.DBColumn)originalColumn.Clone();

            column.BackupChangedProperties.ImportData(originalColumn.BackupChangedProperties);

            if (column.BackupChangedProperties.ContainsKey("Name"))
            {
                Rename(database, tablename, column);
            }

            if (column.BackupChangedProperties.ContainsKey("IsAutoIncrement"))
            {
                if (column.IsAutoIncrement == false)
                {
                    //去掉自增长
                    CancelAutoIncrement(database, tablename, column);
                }
                else
                {
                    //设为自增长
                    BeAutoIncrement(database, tablename, column);
                }
            }

            if (column.BackupChangedProperties.ContainsKey("IsPKID") && column.IsPKID == false)
            {
                CancelPrimaryKey(database, tablename, column);
            }

            bool tosetDefaultValue = false;

            if (column.BackupChangedProperties.ContainsKey("defaultValue") || column.BackupChangedProperties.ContainsKey("dbType"))
            {
                tosetDefaultValue = true;
                CancelDefaultValue(database, tablename, column);
            }

            if (column.BackupChangedProperties.ContainsKey("dbType") || column.BackupChangedProperties.ContainsKey("length") || column.BackupChangedProperties.ContainsKey("CanNull"))
            {
                Modify(database, tablename, column);
            }

            if (tosetDefaultValue && !string.IsNullOrEmpty(column.defaultValue))
            {
                SetDefaultValue(database, tablename, column);
            }

            if (column.BackupChangedProperties.ContainsKey("IsPKID") && column.IsPKID == true)
            {
                BePrimaryKey(database, tablename, column);
            }
        }
예제 #2
0
        public static void HandleNewColumn(IDatabaseService database, string tablename, EJ.DBColumn originalColumn)
        {
            tablename = tablename.ToLower();

            var column = (EJ.DBColumn)originalColumn.Clone();

            column.BackupChangedProperties.ImportData(originalColumn.BackupChangedProperties);

            var dbtype = SqlServerTableService.GetSqlServerType(column);

            string sql = "alter table [" + tablename + "] add [" + column.Name.ToLower() + "] [" + dbtype + "]";

            if (dbtype.IndexOf("char") >= 0)
            {
                if (!string.IsNullOrEmpty(column.length))
                {
                    sql += " (" + column.length + ")";
                }
                else
                {
                    sql += " (50)";
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(column.length))
                {
                    sql += " (" + column.length + ")";
                }
            }

            if (column.IsAutoIncrement == true)
            {
                sql += " IDENTITY (1, 1)";
            }

            if (column.CanNull == false || column.IsPKID == true || column.IsAutoIncrement == true)
            {
                sql += " NOT";
            }
            sql += " NULL  ";
            if (!string.IsNullOrEmpty(column.defaultValue))
            {
                string defaultValue = column.defaultValue.Trim();
                sql += " default '" + defaultValue.Replace("'", "''") + "' with values";
            }
            database.ExecSqlString(sql);

            if (column.IsPKID == true)
            {
                database.ExecSqlString("alter table [" + tablename + "] add constraint pk_" + tablename + "_" + column.Name.ToLower() + " primary key ([" + column.Name.ToLower() + "])");
            }
        }
예제 #3
0
        public static void HandleNewColumn(IDatabaseService database, string tablename, EJ.DBColumn originalColumn)
        {
            tablename = tablename.ToLower();

            var column = (EJ.DBColumn)originalColumn.Clone();

            column.BackupChangedProperties.ImportData(originalColumn.BackupChangedProperties);

            string sqltype = MySqlTableService.GetSqlType(column.dbType);

            if (column.length.IsNullOrEmpty() == false)
            {
                if (sqltype.Contains("("))
                {
                    sqltype = sqltype.Substring(0, sqltype.IndexOf("("));
                }
                sqltype += "(" + column.length + ")";
            }

            string sql = "alter table `" + tablename + "` add `" + column.Name.ToLower() + "` " + sqltype;

            if (column.IsAutoIncrement == true)
            {
                sql += " AUTOINCREMENT";
            }

            if (column.CanNull == false || column.IsPKID == true || column.IsAutoIncrement == true)
            {
                sql += " NOT";
            }
            sql += " NULL  ";
            if (!string.IsNullOrEmpty(column.defaultValue))
            {
                string defaultValue = column.defaultValue.Trim();
                if (column.dbType == "bit")
                {
                    sql += " default " + defaultValue;
                }
                else
                {
                    sql += " default '" + defaultValue.Replace("'", "''") + "'";
                }
            }
            database.ExecSqlString(sql);

            if (column.IsPKID == true)
            {
                database.ExecSqlString(string.Format("Alter table `{0}` add primary key(`{1}`)", tablename, column.Name.ToLower()));
            }
        }
예제 #4
0
        public static void HandleDelete(IDatabaseService database, string tablename, EJ.DBColumn originalColumn)
        {
            tablename = tablename.ToLower();

            var column = (EJ.DBColumn)originalColumn.Clone();

            column.BackupChangedProperties.ImportData(originalColumn.BackupChangedProperties);
            if (column.BackupChangedProperties["Name"] != null)
            {
                column.Name = column.BackupChangedProperties["Name"].OriginalValue.ToString();
                column.BackupChangedProperties.Remove("Name");
            }

            if (column.BackupChangedProperties["IsPKID"] != null && (bool)column.BackupChangedProperties["IsPKID"].OriginalValue == true)
            {
                CancelPrimaryKey(database, tablename, column);
            }
            else if (column.IsPKID == true)
            {
                CancelPrimaryKey(database, tablename, column);
            }

            Delete(database, tablename, column);
        }