コード例 #1
0
        public ActionResult <ApiResult <TableModel <DbTableGridViewModel> > > GetTableList(int?dbId, [FromForm] DbTableViewModel model)
        {
            var result = new  ApiResult <TableModel <DbTableGridViewModel> >();

            result.Data = new TableModel <DbTableGridViewModel>();
            var db = GetTryDb(dbId.Value);

            result.Data.Rows = mapper.Map <List <DbTableGridViewModel> > (db.DbMaintenance.GetTableInfoList(false));
            var codetable = CodeTableDb.AsQueryable().Where(it => it.DbId == dbId.Value).OrderBy(it => it.TableName).ToList();

            foreach (var item in result.Data.Rows)
            {
                item.IsImport = codetable.Any(it => it.TableName.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase)) ? "导入" : "";
            }
            if (!string.IsNullOrEmpty(model.name))
            {
                result.Data.Rows = result.Data.Rows.Where(it => it.Name.ToLower().Contains(model.name?.ToLower())).ToList();
            }
            if (model.typeId == "1")
            {
                result.Data.Rows = result.Data.Rows.Where(it => !string.IsNullOrEmpty(it.IsImport)).ToList();
            }
            if (model.typeId == "2")
            {
                result.Data.Rows = result.Data.Rows.Where(it => string.IsNullOrEmpty(it.IsImport)).ToList();
            }
            result.IsSuccess       = true;
            result.Data.PageNumber = 1;
            result.Data.PageSize   = result.Data.Rows.Count;
            return(result);
        }
コード例 #2
0
        public static List <DbTableViewModel> GetTableParents(DbModelViewModel model, DbTableViewModel table)
        {
            var tableLookup = model.Tables.ToDictionary(t => t.Name);

            Stack <DbTableViewModel> queue = new Stack <DbTableViewModel>();

            queue.Push(table);

            HashSet <DbTableViewModel> parents = new HashSet <DbTableViewModel>();

            while (queue.Any())
            {
                var curr = queue.Pop();

                if (parents.Contains(curr) == false)
                {
                    parents.Add(curr);

                    foreach (var col in curr.Columns)
                    {
                        if (string.IsNullOrEmpty(col.ParentTableName) == false)
                        {
                            var parentTable = tableLookup[col.ParentTableName];
                            if (parentTable != null)
                            {
                                queue.Push(parentTable);
                            }
                        }
                    }
                }
            }

            parents.Remove(table);

            return(parents.ToList());
        }