public async Task UpdateUsersImages(int index = 0) { PixelUser user = null; do { _logger.Info($"index: {index}"); using (var pixelContext = new PixelContext(_dbContextOptions)) { user = await pixelContext.PixelUser.Skip(index).FirstOrDefaultAsync(); } index++; _logger.Info($"user.NickName: {user.NickName}"); await UpdateUserImages(user); } while (user != null); }
public async Task UpdateUserImages(PixelUser pixelUser, int page = 1) { while (true) { _logger.Info($"Page: {page}"); var list = await _imagesParser.LoadImagesByUser(pixelUser.NickName, page); if (list is null || list.Count == 0) { _logger.Info("No images."); return; } _logger.Info($"Images loaded: {list.Count}"); using (var pixelContext = new PixelContext(_dbContextOptions)) { foreach (var item in list) { var entity = await pixelContext.PixelImage .Include(x => x.PixelUser) .SingleOrDefaultAsync(x => x.Url == item.imgUrl); if (entity == null) { await pixelContext.PixelImage.AddAsync(new PixelImage { PixelImageId = Guid.NewGuid(), Url = item.imgUrl, MetaUrl = item.metaUrl, Title = item.title, PixelUserId = pixelUser.PixelUserId }); } else { entity.Title = item.title; entity.MetaUrl = item.metaUrl; pixelContext.PixelImage.Update(entity); } } await pixelContext.SaveChangesAsync(); } page++; } }