Exemple #1
0
 //----------------------------------------------------------------------------------------------------
 public void Set(TableDesignResponse tableDesignResponse)
 {
     this.ConnectionId   = tableDesignResponse.ConnectionId;
     this.TableId        = tableDesignResponse.TableId;
     this.TableStructure = tableDesignResponse.TableStructure;
     this.AllTables_InDb = tableDesignResponse.AllTables_InDb;
 }
Exemple #2
0
        //----------------------------------------------------------------------------------------------------
        public static TableDesignResponse GetInfo_ForModify(int tableId)
        {
            AjaxService.ASPdatabaseService.GetSetVal();
            var rtn = new TableDesignResponse()
            {
                ResponseType = TableDesignResponse.ResponseTypesEnum.GetInfo_ForModify
            };

            rtn.ConnectionId = -1;
            rtn.TableId      = tableId;

            rtn.TableStructure = DbInterfaces.SQLServerInterface.Tables__Get(tableId, true, false, false);
            if (rtn.TableStructure == null)
            {
                throw new Exception("rtn.TableStructure is null");
            }
            var connectionInfo = DataAccess.DatabaseConnectionsCRUD.Get(rtn.TableStructure.ConnectionId, false);

            rtn.ConnectionName = connectionInfo.SingleConnectionInfo.ConnectionName;
            rtn.TableStructure.ConnectionName = connectionInfo.SingleConnectionInfo.ConnectionName;
            rtn.ConnectionId = rtn.TableStructure.ConnectionId;
            rtn.Schema       = rtn.TableStructure.Schema;
            rtn.TableName    = rtn.TableStructure.TableName;

            rtn.AllTables_InDb = SQLObjectsCRUD.ASPdb_Table__GetAll(rtn.ConnectionId, true).ToArray();

            return(rtn);
        }
Exemple #3
0
        //----------------------------------------------------------------------------------------------------
        public static TableDesignResponse Table__Create(TableStructure tableStructure)
        {
            AjaxService.ASPdatabaseService.GetSetVal();
            var rtn = new TableDesignResponse()
            {
                ResponseType = TableDesignResponse.ResponseTypesEnum.CreateTable,
                ConnectionId = tableStructure.ConnectionId, Schema = tableStructure.Schema, TableName = tableStructure.TableName
            };

            tableStructure.Columns = (from c in tableStructure.Columns
                                      where c.ColumnName.Length > 0 &&
                                      c.DataType.Length > 0
                                      orderby c.OrdinalPosition
                                      select c).ToArray();

            var primaryKey = new PrimaryKey()
            {
                ConnectionId = tableStructure.ConnectionId, TableId = tableStructure.TableId, Schema = tableStructure.Schema, TableName = tableStructure.TableName
            };
            var tmp_PrimaryKeyColumns = new List <PrimaryKeyColumn>();
            int i = 1;

            foreach (var column in tableStructure.Columns)
            {
                if (column.IsPrimaryKey)
                {
                    tmp_PrimaryKeyColumns.Add(new PrimaryKeyColumn()
                    {
                        ColumnName = column.ColumnName, OrdinalPosition = i++
                    });
                }
                column.Fix_DefaultValue_ForSaving();
            }
            primaryKey.Columns = tmp_PrimaryKeyColumns.ToArray();

            string sql = SQLServer_SQLBuilders.BuildSql__Table_Create(tableStructure);

            ASPdb.Framework.Debug.WriteLine(sql);
            using (DbConnectionCommand command = UniversalADO.OpenConnectionCommand(tableStructure.ConnectionId, sql))
            {
                command.Command.ExecuteNonQuery();
            }
            PrimaryKey__Create(primaryKey, false);

            rtn.TableId = -1;
            Memory.AppCache.Reset();
            var allTables = DataAccess.SQLObjectsCRUD.ASPdb_Table__GetAll(tableStructure.ConnectionId, true);

            foreach (var table in allTables)
            {
                if (table.Schema.ToLower() == rtn.Schema.ToLower() &&
                    table.TableName.ToLower() == rtn.TableName.ToLower())
                {
                    rtn.TableId = table.TableId;
                }
            }

            return(rtn);
        }
Exemple #4
0
        //----------------------------------------------------------------------------------------------------
        public static TableDesignResponse Table__Delete(TableStructure tableStructure)
        {
            AjaxService.ASPdatabaseService.GetSetVal();
            var rtn = new TableDesignResponse()
            {
                ResponseType = TableDesignResponse.ResponseTypesEnum.DeleteTable
            };

            string sql = SQLServer_SQLBuilders.BuildSql__Table_Drop(tableStructure);

            using (DbConnectionCommand command = UniversalADO.OpenConnectionCommand(tableStructure.ConnectionId, sql))
            {
                command.Command.ExecuteNonQuery();
            }
            Memory.AppCache.Reset();
            return(rtn);
        }
Exemple #5
0
        //----------------------------------------------------------------------------------------------------
        public static TableDesignResponse GetInfo_ForCreateNew(int connectionId)
        {
            AjaxService.ASPdatabaseService.GetSetVal();
            var rtn = new TableDesignResponse()
            {
                ResponseType = TableDesignResponse.ResponseTypesEnum.GetInfo_ForCreateNew
            };

            rtn.ConnectionId = connectionId;
            rtn.TableId      = -1;

            var connectionInfo = DataAccess.DatabaseConnectionsCRUD.Get(connectionId, false);

            rtn.ConnectionName = connectionInfo.SingleConnectionInfo.ConnectionName;

            var schemaInfos = DbInterfaces.GenericInterface.Schemas__GetAll(connectionId);

            rtn.Schemas = (from s in schemaInfos orderby s.SchemaName select s.SchemaName).ToArray();

            rtn.AllTables_InDb = SQLObjectsCRUD.ASPdb_Table__GetAll(rtn.ConnectionId, true).ToArray();

            return(rtn);
        }
Exemple #6
0
        //----------------------------------------------------------------------------------------------------
        public static TableDesignResponse Table__Update(TableStructure newTableStructure)
        {
            AjaxService.ASPdatabaseService.GetSetVal();
            var rtn = new TableDesignResponse()
            {
                ResponseType = TableDesignResponse.ResponseTypesEnum.UpdateTable
            };
            var currentTableStructure = Tables__Get(newTableStructure.TableId, true);

            var currentColumnsDict = new Dictionary <string, Column>();

            foreach (var column in currentTableStructure.Columns)
            {
                if (!currentColumnsDict.ContainsKey(column.ColumnName.ToLower()))
                {
                    currentColumnsDict.Add(column.ColumnName.ToLower(), column);
                }
            }


            var  columnsList_All    = new List <Column>();
            var  columnsList_Delete = new List <Column>();
            var  columnsList_Add    = new List <Column>();
            var  columnsList_Update = new List <Column>();
            bool reorder_Needed     = false;
            int  tmpOrdinalPos      = 1;

            //var cols = (from c in newTableStructure.Columns orderby c.OrdinalPosition, c.ColumnName select c)

            //--------------------
            foreach (var column in (from c in newTableStructure.Columns orderby c.OrdinalPosition, c.ColumnName select c))
            {
                if (column.HasValidContent())
                {
                    column.Validate(Enums.ValidationTypes.NotSet);
                    column.ConnectionId    = currentTableStructure.ConnectionId;
                    column.Schema          = currentTableStructure.Schema;
                    column.TableName       = currentTableStructure.TableName;
                    column.OrdinalPosition = tmpOrdinalPos++;
                    column.Fix_DefaultValue_ForSaving();

                    columnsList_All.Add(column);
                    switch (column.ChangeAction)
                    {
                    case Column.ChangeActionTypes.Delete:
                        columnsList_Delete.Add(column);
                        break;

                    case Column.ChangeActionTypes.Update:
                        if (Table__Update__IsColumnDifferent(column, currentColumnsDict))
                        {
                            columnsList_Update.Add(column);
                        }
                        break;

                    case Column.ChangeActionTypes.Add:
                        columnsList_Add.Add(column);
                        reorder_Needed = true;
                        break;
                    }
                }
            }
            newTableStructure.Columns = columnsList_All.ToArray();

            //--------------------
            foreach (var column in columnsList_Delete)
            {
                Column__Delete(column);
            }

            foreach (var column in columnsList_Update)
            {
                Column__Update(column);
            }

            foreach (var column in columnsList_Add)
            {
                Column__Create(column);
            }

            //--------------------
            if (!reorder_Needed)
            {
                foreach (var column in newTableStructure.Columns)
                {
                    if (currentColumnsDict.ContainsKey(column.ColumnName_Original.ToLower()))
                    {
                        var columnCurrent = currentColumnsDict[column.ColumnName_Original.ToLower()];
                        if (columnCurrent.OrdinalPosition != column.OrdinalPosition)
                        {
                            reorder_Needed = true;
                        }
                    }
                }
            }
            //--------------------
            if (reorder_Needed)
            {
                string sql = SQLServer_SQLBuilders.BuildSql__Table_UpdateWithRecreate(newTableStructure, currentTableStructure);
                ASPdb.Framework.Debug.WriteLine("------------------------------");
                ASPdb.Framework.Debug.WriteLine("SQL: " + sql);
                using (DbConnectionCommand command = UniversalADO.OpenConnectionCommand(currentTableStructure.ConnectionId, sql))
                {
                    command.Command.ExecuteNonQuery();
                }
            }

            Memory.AppCache.Reset();
            var tableStructure_ResetCache = DbInterfaces.SQLServerInterface.Tables__Get(newTableStructure.TableId, false, true, true);

            return(rtn);
        }