Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
            }
        }