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(); } }
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); }
public async Task SaveChangesAsync() { await _context.SaveChangesAsync(); }