Пример #1
0
 /// <summary>
 /// Create foreign key constraint
 /// </summary>
 /// <param name="model">Relationship model</param>
 public void AddRelationship(RelationshipModel model)
 {
     using (IMsSqlMapper mapper = new MsSqlMapper())
     {
         mapper.CreateForeignKey(model.Destination.Title, model.Source.Title, model.Attributes, model.Name, model.UpdateAction, model.DeleteAction);
     }
 }
Пример #2
0
 /// <summary>
 /// Rename table in DB
 /// </summary>
 /// <param name="oldName">Old table name</param>
 /// <param name="newName">New table name</param>
 public void RenameTable(string oldName, string newName)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.RenameTable(oldName, newName);
     }
 }
Пример #3
0
 /// <summary>
 /// Drop column in table
 /// </summary>
 /// <param name="table">Table name</param>
 /// <param name="column">Column name</param>
 public void RemoveColumn(string table, string column)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.DropColumn(table, column);
     }
 }
Пример #4
0
 /// <summary>
 /// Alter columnd to table in DB
 /// </summary>
 /// <param name="table">Table name</param>
 /// <param name="model">Column model</param>
 public void UpdateColumn(string table, TableRowModel model)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.AlterColumn(table, model);
     }
 }
Пример #5
0
 /// <summary>
 /// Drop table from DB
 /// </summary>
 /// <param name="table">Table name</param>
 public void RemoveTable(TableModel table)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.DropTable(table.Title);
     }
 }
Пример #6
0
 /// <summary>
 /// Add columnd to table in DB
 /// </summary>
 /// <param name="table">Table name</param>
 /// <param name="model">Column model</param>
 public void AddColumn(string table, TableRowModel model)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.AddNewColumn(table, model);
     }
 }
Пример #7
0
        /// <summary>
        /// Drop selected DB - MS Sql Server only
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="dbName">DB for drop</param>
        private async void DatabaseConnectionSidebarOnDropMsSqlDatabase(object sender, string dbName)
        {
            if (dbName.Equals(SessionProvider.Instance.Database))
            {
                await this.ShowMessageAsync("Drop database", $"Database {dbName} is currently in use");

                return;
            }

            var progress = await this.ShowProgressAsync($"Drop database {dbName}", "Please wait...");

            progress.SetIndeterminate();

            try
            {
                using (IMsSqlMapper mapper = new MsSqlMapper())
                {
                    await Task.Factory.StartNew(() => mapper.DropDatabase(dbName));

                    await DatabaseConnectionSidebar.LoadMsSqlData(true);

                    await progress.CloseAsync();

                    await this.ShowMessageAsync("Drop database", $"Database {dbName} dropped successfully");
                }
            }
            catch (SqlException ex)
            {
                await progress.CloseAsync();

                await this.ShowMessageAsync("Drop database", ex.Message);
            }
        }
Пример #8
0
 /// <summary>
 /// Create new table in DB
 /// </summary>
 /// <param name="name">Table name</param>
 public void CreateTable(string name)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.CreateTable(name);
     }
 }
Пример #9
0
 /// <summary>
 /// Get table info with all collumns from DB
 /// </summary>
 /// <param name="id">Object ID</param>
 /// <param name="name">Table name</param>
 /// <returns>Table model</returns>
 public TableModel ReadTableDetails(string id, string name)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         return(mapper.SelectTableDetails(id, name));
     }
 }
Пример #10
0
 /// <summary>
 /// List name of all foreign key coninstraints
 /// </summary>
 /// <returns>Names of all foreign key coninstraints</returns>
 public IEnumerable <string> ListAllForeignKeys()
 {
     using (IMsSqlMapper mapper = new MsSqlMapper())
     {
         return(mapper.ListAllForeignKeys());
     }
 }
Пример #11
0
 /// <summary>
 /// Delete diagram from DB
 /// </summary>
 /// <param name="name">Diagram name</param>
 /// <returns>One if successful, zero if not</returns>
 public int DeleteDiagram(string name)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         return(mapper.DeleteDiagram(name));
     }
 }
Пример #12
0
 /// <summary>
 /// Execute raw query
 /// </summary>
 /// <param name="sql">SQL Command text</param>
 /// <returns>Dataset with results</returns>
 public DataSet ExecuteRawQuery(string sql)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         return(mapper.ExecuteRawQuery(sql));
     }
 }
Пример #13
0
 /// <summary>
 /// Rename column in table
 /// </summary>
 /// <param name="table">Table name</param>
 /// <param name="oldName">Old name</param>
 /// <param name="newName">New name</param>
 public void RenameColumn(string table, string oldName, string newName)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.RenameColumn(table, oldName, newName);
     }
 }
Пример #14
0
 /// <summary>
 /// List tables in DB
 /// </summary>
 /// <returns>Collection of tables with ID and name</returns>
 public IEnumerable <TableModel> ListTables()
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         return(mapper.ListTables());
     }
 }
Пример #15
0
 /// <summary>
 /// Drop foreign key constraint
 /// </summary>
 /// <param name="model">Relationship model</param>
 public void RemoveRelationship(RelationshipModel model)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         mapper.DropForeignKey(model.Destination.Title, model.Name);
     }
 }
Пример #16
0
        /// <summary>
        /// List foreign key coninstraints for table
        /// </summary>
        /// <param name="table">Name of table</param>
        /// <param name="tables">Tables in designer</param>
        /// <returns>Collection of FK constraints</returns>
        public IEnumerable <RelationshipModel> ReadRelationshipModels(string table, IEnumerable <TableModel> tables)
        {
            using (MsSqlMapper mapper = new MsSqlMapper())
            {
                IEnumerable <ForeignKeyDto> keyDtos = mapper.ListForeignKeys(table);

                var grouped = keyDtos.Where(t =>
                {
                    if (t.PrimaryKeyTable.Equals(table, StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (tables.Any(s => s.Title.Equals(t.ForeignKeyTable, StringComparison.CurrentCultureIgnoreCase)))
                        {
                            return(true);
                        }
                    }

                    if (t.ForeignKeyTable.Equals(table, StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (tables.Any(s => s.Title.Equals(t.PrimaryKeyTable, StringComparison.CurrentCultureIgnoreCase)))
                        {
                            return(true);
                        }
                    }

                    return(false);
                }).GroupBy(t => t.Name);

                var res = new List <RelationshipModel>();

                foreach (IGrouping <string, ForeignKeyDto> dtos in grouped)
                {
                    var model = new RelationshipModel();
                    model.Name = dtos.Key;

                    var first = dtos.FirstOrDefault();

                    model.Source      = tables.FirstOrDefault(t => t.Title.Equals(first.PrimaryKeyTable));
                    model.Destination = tables.FirstOrDefault(t => t.Title.Equals(first.ForeignKeyTable));

                    foreach (ForeignKeyDto keyDto in dtos)
                    {
                        RowModelPair pair = new RowModelPair();

                        pair.Source      = model.Source.Attributes.FirstOrDefault(t => t.Name.Equals(keyDto.PrimaryKeyCollumn));
                        pair.Destination = model.Destination.Attributes.FirstOrDefault(t => t.Name.Equals(keyDto.ForeignKeyCollumn));

                        model.Attributes.Add(pair);
                    }

                    model.Optionality  = model.Attributes.All(t => t.Destination.AllowNull) ? Optionality.Optional : Optionality.Mandatory;
                    model.DeleteAction = first.DeleteAction;
                    model.UpdateAction = first.UpdateAction;
                    model.Id           = first.Id;
                    model.LastModified = first.LastModified;
                    res.Add(model);
                }
                return(res);
            }
        }
Пример #17
0
 /// <summary>
 /// Save diagram to DB
 /// </summary>
 /// <param name="name">Diagram name</param>
 /// <param name="data">XML data</param>
 /// <returns>One if successful, zero if not</returns>
 public int SaveDiagram(string name, XDocument data)
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         IEnumerable <DiagramModel> diagrams = SelectDiagrams();
         mapper.CreateDiagramTable();
         return(diagrams.Any(t => t.Name.Equals(name)) ? mapper.UpdateDiagram(name, data) : mapper.InsertDiagram(name, data));
     }
 }
Пример #18
0
 /// <summary>
 /// Select existing diagrams
 /// </summary>
 /// <returns>Collections of diagrams</returns>
 public IEnumerable <DiagramModel> SelectDiagrams()
 {
     using (IMapper mapper = new MsSqlMapper())
     {
         try
         {
             IEnumerable <DiagramModel> diagrams = mapper.SelectDiagrams();
             return(diagrams);
         }
         catch (SqlException)
         {
             return(new List <DiagramModel>());
         }
     }
 }
Пример #19
0
        /// <summary>
        /// Update PK constraint
        /// </summary>
        /// <param name="table">Table model</param>
        public void UpdatePrimaryKeyConstraint(TableModel table)
        {
            using (IMapper mapper = new MsSqlMapper())
            {
                string   constraintName = table.Attributes.FirstOrDefault(t => t.PrimaryKeyConstraintName != null)?.PrimaryKeyConstraintName;
                string[] columns        = table.Attributes.Where(t => t.PrimaryKey).Select(s => s.Name).ToArray();

                if (constraintName != null)
                {
                    mapper.DropPrimaryKey(table.Title, constraintName);
                }

                if (columns.Length != 0)
                {
                    mapper.CreatePrimaryKey(table.Title, columns);
                }
            }
        }
Пример #20
0
        /// <summary>
        /// Create new DB - MS Sql Server only
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="eventArgs"></param>
        private async void DatabaseConnectionSidebarOnCreateMsSqlDatabase(object sender, System.EventArgs eventArgs)
        {
            string name = await this.ShowInputAsync("Create database", "Database name");

            if (name == null || name.Equals(string.Empty))
            {
                return;
            }

            try
            {
                using (IMsSqlMapper mapper = new MsSqlMapper())
                {
                    mapper.CreateDatabase(name);
                    await DatabaseConnectionSidebar.LoadMsSqlData(true);
                }
            }
            catch (SqlException exc)
            {
                await this.ShowMessageAsync("Create database", exc.Message);
            }
        }
        /// <summary>
        /// Load Ms Sql tree data
        /// </summary>
        /// <param name="loadPrev">Select previous DB</param>
        public async Task LoadMsSqlData(bool loadPrev = false)
        {
            int    selected = 0;
            string name     = string.Empty;

            if (loadPrev)
            {
                DatabaseInfo info = DatabaseInfos.FirstOrDefault(t => t.Name.Equals(SessionProvider.Instance.Database));
                if (info != null)
                {
                    name = info.Name;
                }
            }

            await Task.Run(() =>
            {
                var pomInfos  = new List <DatabaseInfo>();
                DatabaseInfos = new List <DatabaseInfo>();
                using (MsSqlMapper mapper = new MsSqlMapper())
                {
                    pomInfos = mapper.ListDatabases().ToList();
                }

                foreach (DatabaseInfo info in pomInfos)
                {
                    try
                    {
                        using (MsSqlMapper mapper = new MsSqlMapper(SessionProvider.Instance.GetConnectionStringForMsSqlDatabase(info.Name)))
                        {
                            try
                            {
                                mapper.ListTables().ToList().ForEach(t => info.Tables.Add(t));
                            }
                            catch (SqlException)
                            {
                                Debug.WriteLine("Can't read table");
                                continue;
                            }

                            try
                            {
                                mapper.SelectDiagrams().ToList().ForEach(t => info.Diagrams.Add(t));
                            }
                            catch (SqlException)
                            {
                                Debug.WriteLine("Can't read diagrams");
                            }

                            DatabaseInfos.Add(info);
                        }
                    }
                    catch (SqlException e)
                    {
                        Debug.WriteLine(e.Message);
                    }
                }
            });

            if (loadPrev)
            {
                int indexOf = DatabaseInfos.IndexOf(DatabaseInfos.FirstOrDefault(t => t.Name.Equals(name)));
                selected = indexOf > 0 ? indexOf : 0;
            }

            if (DatabaseInfos.Any())
            {
                if (SessionProvider.Instance.Database.Equals(string.Empty))
                {
                    SessionProvider.Instance.Database = DatabaseInfos[selected].Name;
                }
                MsSqlDatabaseComboBox.ItemsSource       = DatabaseInfos;
                MsSqlDatabaseComboBox.DisplayMemberPath = "Name";
                MsSqlDatabaseComboBox.SelectedIndex     = selected;
            }

            LoadMsSqlTreeViewData();

            MsSqlServerGrid.Visibility = Visibility.Visible;
        }