public async Task SaveChangesAsync(IEnumerable <AssetEntry> entries) { using (var repository = _platformRepository()) { var nonTransientEntryIds = entries.Where(x => !x.IsTransient()).Select(x => x.Id).ToArray(); var originalDataEntities = repository.AssetEntries.Where(x => nonTransientEntryIds.Contains(x.Id)).ToList(); foreach (var entry in entries) { var originalEntity = originalDataEntities.FirstOrDefault(x => x.Id == entry.Id); var modifiedEntity = AbstractTypeFactory <AssetEntryEntity> .TryCreateInstance().FromModel(entry); if (originalEntity != null) { modifiedEntity.Patch(originalEntity); } else { repository.Add(modifiedEntity); } } await repository.UnitOfWork.CommitAsync(); //Reset cached items AssetCacheRegion.ExpireRegion(); } }
public async Task DeleteAsync(IEnumerable <string> ids) { if (ids == null) { throw new ArgumentNullException(nameof(ids)); } using (var repository = _platformRepository()) { var items = await repository.AssetEntries .Where(p => ids.Contains(p.Id)) .ToListAsync(); foreach (var item in items) { repository.Remove(item); } await repository.UnitOfWork.CommitAsync(); AssetCacheRegion.ExpireRegion(); } }