コード例 #1
0
ファイル: MenuServer.cs プロジェクト: FreshManIT/DBNote
        /// <summary>
        /// Get Menu info.
        /// </summary>
        /// <returns></returns>
        public static MenuModel GetMenuInfo()
        {
            var serverAdapter = new ServerAdapter(DataBaseTypeEnum.MySql | DataBaseTypeEnum.SqlServer | DataBaseTypeEnum.Sqlite | DataBaseTypeEnum.Oracle);

            if (serverAdapter.ServerList == null || !serverAdapter.ServerList.Any())
            {
                return(null);
            }

            var resultMenu = new ConcurrentBag <MenuModel>();

            serverAdapter.ServerList.AsParallel().ForEach(baseserver =>
            {
                var dbList = baseserver.DbBaseTableAccess.GetDataBaseModels(baseserver.ConnectionString);
                if (dbList != null && dbList.Any())
                {
                    var i           = 2;
                    var baseserver1 = baseserver;
                    dbList.ForEach(f =>
                    {
                        var childMenu = new List <MenuModel>();
                        try
                        {
                            var tables = baseserver1.DbBaseTableAccess.GetTableList(baseserver1.ConnectionString, f.Name);
                            var views  = baseserver1.DbBaseTableAccess.GetViews(baseserver1.ConnectionString, f.Name);
                            if (tables != null && tables.Any())
                            {
                                childMenu.AddRange(tables.Select(r => new MenuModel {
                                    Menuid = i++, Icon = "icon-table", Menuname = r.Name, Url = $"/home/ShowTableInfo?datatableName={f.Name}&tableName={r.Name.Replace("#", "**")}&type=table&dbType={baseserver.CurrentDataBaseTypeEnum.GetHashCode()}"
                                }).ToList());
                            }

                            if (views != null && views.Any())
                            {
                                childMenu.AddRange(views.Select(r => new MenuModel {
                                    Menuid = i++, Icon = "icon-table", Menuname = r.Name, Url = $"/home/ShowTableInfo?datatableName={f.Name}&tableName={r.Name.Replace("#", "**")}&type=view&dbType={baseserver.CurrentDataBaseTypeEnum.GetHashCode()}"
                                }).ToList());
                            }
                            resultMenu.Add(new MenuModel {
                                Menuid = i++, Menuname = f.Name, Icon = "icon-database", Menus = childMenu
                            });
                        }
                        catch (Exception ex)
                        {
                            ErrorInfoServer.Push(ex);
                        }
                    });
                }
            });

            return(new MenuModel {
                Menus = resultMenu.ToList()
            });
        }