Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }