Exemple #1
0
        public static async Task InitializeData(TreeContext context)
        {
            context.Database.Migrate();

            if (!context.Nodes.Any())
            {
                var node = new DbNode[]
                {
                    new DbNode
                    {
                        Level    = 0,
                        Name     = "root",
                        ParentId = null
                    }
                };
                context.Nodes.AddRange(node);
                await context.SaveChangesAsync();

                var rootId = context.Nodes.FirstOrDefault().IdNode;

                var nodes = new DbNode[] {
                    new DbNode
                    {
                        Level    = 1,
                        Name     = "First",
                        ParentId = rootId
                    },
                    new DbNode
                    {
                        Level    = 1,
                        Name     = "Second",
                        ParentId = rootId
                    },
                    new DbNode
                    {
                        Level    = 1,
                        Name     = "Text",
                        ParentId = rootId
                    },
                    new DbNode
                    {
                        Level    = 1,
                        Name     = "Any",
                        ParentId = rootId
                    }
                };
                context.Nodes.AddRange(nodes);
                await context.SaveChangesAsync();
            }
        }
Exemple #2
0
        public async Task <List <VMDeleteNodeResult> > DeleteAsync(Guid id)
        {
            List <DbNode> deletedNodes = new List <DbNode>();
            var           node         = new DbNode
            {
                IdNode = id
            };

            try
            {
                var result = _context.Nodes.Remove(node);
                deletedNodes.Add(result.Entity);
                var childs = await _context.Nodes.Where(x => x.ParentId == result.Entity.IdNode).Select(x => x.IdNode).ToListAsync();

                foreach (var childId in childs)
                {
                    node = new DbNode
                    {
                        IdNode = childId
                    };
                    result = _context.Nodes.Remove(node);
                    deletedNodes.Add(result.Entity);
                }
            }
            catch (ArgumentException)
            {
                return(null);
            }

            await _context.SaveChangesAsync();

            var viewModels = new List <VMDeleteNodeResult>();

            foreach (var deletedNode in deletedNodes)
            {
                var viewModel = new VMDeleteNodeResult();
                viewModel.IdNode = deletedNode.IdNode;
                viewModels.Add(viewModel);
            }

            return(viewModels);
        }
Exemple #3
0
 public async Task SaveChangesAsync()
 {
     await _context.SaveChangesAsync();
 }