public virtual async Task SaveCustomerReviewsAsync(CustomerReview[] items) { if (items == null) { throw new ArgumentNullException(nameof(items)); } using (var repository = _repositoryFactory()) { var pkMap = new PrimaryKeyResolvingMap(); var alreadyExistEntities = await repository.GetByIdsAsync(items.Where(m => !m.IsTransient()).Select(x => x.Id).ToArray()); foreach (var derivativeContract in items) { var sourceEntity = AbstractTypeFactory <CustomerReviewEntity> .TryCreateInstance().FromModel(derivativeContract, pkMap); var targetEntity = alreadyExistEntities.FirstOrDefault(x => x.Id == sourceEntity.Id); if (targetEntity != null) { sourceEntity.Patch(targetEntity); } else { repository.Add(sourceEntity); } } await repository.UnitOfWork.CommitAsync(); pkMap.ResolvePrimaryKeys(); } CustomerReviewCacheRegion.ExpireRegion(); }
public virtual async Task DeleteCustomerReviewsAsync(string[] ids) { using (var repository = _repositoryFactory()) { var items = await repository.GetByIdsAsync(ids); foreach (var item in items) { repository.Remove(item); } await repository.UnitOfWork.CommitAsync(); CustomerReviewCacheRegion.ExpireRegion(); } }