private async Task traverseTreeAsync(TEntity parent, ICollection <TEntity> children, bool autoSave = false, CancellationToken cancellationToken = default) { if (children == null || !children.Any()) { return; } var index = 0; foreach (var c in children) { var code = TreeCodeGenerator.AppendCode(parent.Code, TreeCodeGenerator.CreateCode(++index)); c.SetCode(code); TraverseTreeAction?.Invoke(c); await traverseTreeAsync(c, c.Children, autoSave, cancellationToken); } }
protected virtual async Task TraverseTreeAsync(TEntity parent, ICollection <TEntity> children) { if (children == null || !children.Any()) { return; } var index = 0; foreach (var c in children) { if (c.Id == Guid.Empty) { EntityHelper.TrySetId(c, () => GuidGenerator.Create()); } var code = TreeCodeGenerator.Append(parent.Code, TreeCodeGenerator.Create(++index)); c.SetCode(code); TraverseTreeAction?.Invoke(c); await TraverseTreeAsync(c, c.Children); } }