public async Task SaveChangesAsync(PackageType[] packageTypes) { if (packageTypes == null) { throw new ArgumentNullException(nameof(packageTypes)); } var pkMap = new PrimaryKeyResolvingMap(); using (var repository = _repositoryFactory()) { foreach (var packageType in packageTypes) { var sourceEntry = AbstractTypeFactory <PackageTypeEntity> .TryCreateInstance().FromModel(packageType, pkMap); var targetEntry = await repository.PackageTypes.FirstOrDefaultAsync(x => x.Id == packageType.Id); if (targetEntry == null) { repository.Add(sourceEntry); } else { sourceEntry.Patch(targetEntry); } } await repository.UnitOfWork.CommitAsync(); PackageTypeCacheRegion.ExpireRegion(); } }
public async Task DeletePackageTypesAsync(string[] ids) { using (var repository = _repositoryFactory()) { var packageTypes = await repository.PackageTypes.Where(x => ids.Contains(x.Id)).ToArrayAsync(); foreach (var packageType in packageTypes) { repository.Remove(packageType); } await repository.UnitOfWork.CommitAsync(); PackageTypeCacheRegion.ExpireRegion(); } }