/// <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; }