protected override void UndoDetail(TDto dto, Recyclate entity, bool isDelete) { base.UndoDetail(dto, entity, isDelete); if (entity.GetID() > 0 && entity.RecyclatePackages.Count > 0) { if (isDelete || dto.RecyclatePackages == null || dto.RecyclatePackages.Count == 0) { this.recyclateRepository.TotalSmartPortalEntities.RecyclatePackages.RemoveRange(entity.RecyclatePackages); } else { entity.RecyclatePackages.ToList() //Have to use .ToList(): to convert enumerable to List before do remove. To correct this error: Collection was modified; enumeration operation may not execute. .Where(detailModel => !dto.RecyclatePackages.Any(detailDTO => detailDTO.RecyclatePackageID == detailModel.RecyclatePackageID)) .Each(deleted => this.recyclateRepository.TotalSmartPortalEntities.RecyclatePackages.Remove(deleted)); //remove deleted details } } }
protected override void UpdateDetail(TDto dto, Recyclate entity) { base.UpdateDetail(dto, entity); if (dto.RecyclatePackages != null && dto.RecyclatePackages.Count > 0) { dto.RecyclatePackages.Each(detailDTO => { RecyclatePackage recyclatePackage; if (detailDTO.RecyclatePackageID <= 0 || (recyclatePackage = entity.RecyclatePackages.First(detailModel => detailModel.RecyclatePackageID == detailDTO.RecyclatePackageID)) == null) { recyclatePackage = new RecyclatePackage(); entity.RecyclatePackages.Add(recyclatePackage); } Mapper.Map <RecyclatePackageDTO, RecyclatePackage>(detailDTO, recyclatePackage); }); } }