Ejemplo n.º 1
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>());
         }
     }
 }
        /// <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;
        }