コード例 #1
0
        public bool Update(PurchaseBillViewModel entity)
        {
            var purchaseBill           = entity.MapToPuchaseBill();
            var newPurchaseBillDetails = new List <PurchaseBillDetail>();

            foreach (var item in entity.PurchaseBillDetailViewModels)
            {
                var purchaseBillDetail = item.MapToPurchaseBillDetail();
                purchaseBillDetail.PurchaseBillId = purchaseBill.PurchaseBillId;
                newPurchaseBillDetails.Add(purchaseBillDetail);
            }
            _purchaseBillRepository.Update(purchaseBill);
            var oldPurchaseBillDetails = _purchaseBillDetailRepository.FindAll(pd => pd.PurchaseBillId == entity.PurchaseBillId).ToList();

            if (oldPurchaseBillDetails != null)
            {
                var deletePurchaseBillDetails = oldPurchaseBillDetails.Where(op => !newPurchaseBillDetails.Any(p => p.Id == op.Id));
                var addPurchaseBillDetails    = newPurchaseBillDetails.Where(p => !oldPurchaseBillDetails.Any(op => op.Id == p.Id));
                var updatePurchaseBillDetails = newPurchaseBillDetails.Where(p => oldPurchaseBillDetails.Any(op => op.Id == p.Id));
                _purchaseBillDetailRepository.DeleteRange(deletePurchaseBillDetails);
                _purchaseBillDetailRepository.AddRange(addPurchaseBillDetails);
                _purchaseBillDetailRepository.UpdateRange(updatePurchaseBillDetails);
            }
            return(true);
        }