public static void UpdateOrder(this Order entity, OrderModel viewModel) { entity.CustomerNumber = viewModel.CustomerNumber; entity.OrderDate = viewModel.OrderDate; entity.DeliveryDate = viewModel.DeliveryDate; if (viewModel.OrderPositions != null) { if (entity.OrderPositions == null) entity.OrderPositions = new List<OrderPosition>(); foreach (OrderPositionModel pos in viewModel.OrderPositions) { var posEntity = entity.OrderPositions.SingleOrDefault(x => x.ID == pos.PositionOrderId); if (posEntity == null || posEntity.ID == 0) { posEntity = new OrderPosition(); posEntity.UpdateOrderPosition(pos); entity.OrderPositions.Add(posEntity); } else { posEntity.UpdateOrderPosition(pos); } } } entity.TotalPrice = entity.OrderPositions.Sum(x => x.Total); }