Example #1
0
        private async Task RemoveFolder(FolderDbItem folder, CancellationToken cancellationToken)
        {
            List <FolderDbItem> subFolders;
            int skip  = 0;
            int limit = 1000;

            do
            {
                subFolders = await context.Folders
                             .Where(x => x.ParentId == folder.Id && x.UserIdentity == folder.UserIdentity)
                             .Take(limit)
                             .Skip(skip)
                             .ToListAsync(cancellationToken);

                foreach (var subFolder in subFolders)
                {
                    await RemoveFolder(subFolder, cancellationToken);
                }

                skip += limit;
            }while (subFolders.Any());

            context.Folders.Remove(folder);
        }
Example #2
0
 private static Folder ToModel(FolderDbItem dbItem) => new Folder(
     new FolderIdentity(dbItem.Id, dbItem.UserIdentity),
     dbItem.Name,
     dbItem.ParentId != null? new FolderIdentity(dbItem.ParentId.Value, dbItem.UserIdentity) : null,
     dbItem.ParentsPath.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(x => new FolderIdentity(new Guid(x), dbItem.UserIdentity)).ToList());