public void SaveAverageProductRates(AverageProductRate item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } using (var repository = _repositoryFactory()) { using (var changeTracker = GetChangeTracker(repository)) { var alreadyExistEntities = repository.GetAverageProductRatesByProductIds(new[] { item.ProductId }); var sourceEntity = AbstractTypeFactory <AverageProductRateEntity> .TryCreateInstance() .FromModel(item); var targetEntity = alreadyExistEntities.FirstOrDefault(x => x.ProductId == sourceEntity.ProductId); if (targetEntity != null) { changeTracker.Attach(targetEntity); sourceEntity.Patch(targetEntity); } else { repository.Add(sourceEntity); } CommitChanges(repository); } } }
public virtual AverageProductRateEntity FromModel(AverageProductRate averageProductRate) { if (averageProductRate == null) { throw new ArgumentNullException(nameof(averageProductRate)); } AverageRate = averageProductRate.AverageRate; ProductId = averageProductRate.ProductId; return(this); }
public virtual AverageProductRate ToModel(AverageProductRate averageProductRate) { if (averageProductRate == null) { throw new ArgumentNullException(nameof(averageProductRate)); } averageProductRate.AverageRate = AverageRate; averageProductRate.ProductId = ProductId; return(averageProductRate); }