2

この方法は私の最善ではありませんが、循環参照の問題が発生していたため、土壇場でまとめました。何らかの理由で、詳細オブジェクトで元の参照順序を削除しているにもかかわらず、セッションとの別の関連付けがまだ残っています。代わりに get を使用する必要がありますか? または、ID = x のすべての注文を削除する方法はありますか?

public DetailDTO SaveNewDetailToOrder(DetailDTO detailDTO)
    {
        var detailReturn = new DetailDTO();

        try
        {
            var order = LoadOrderById(detailDTO.OrderId);
            var previousStatus = issue.CurrentDetailStatus;

            if (previousStatus != null && detailDTO.Status.Id != previousStatus.Id)
            {
                var detail = Mapper.Map<DetailDTO, Detail>(detailDTO);
                _orderRepository.EvictOrder(detail.DetailOrder);
                order.Details.Add(detailDTO);
                order.IsEscalated = false;
                order.DormantDate = detailDTO.CreatedTime;

                var orderReturn = SaveOrder(order);   ///Error Here
                if (orderReturn.IsActionSuccessful)
                {
                    detailReturn =
                        orderReturn.Details.DTOObjects.OrderByDescending(x => x.CreatedTime).First();
                    SendStatusChangeEmail(orderReturn);
                }

            }
            else
            {

                detailReturn = _detailService.SaveDetail(detailDTO);
            }

        }
        catch (Exception ex)
        {
            throw ServiceErrorMessage(ex, detailReturn);
        }

        return detailReturn ;

    }
4

1 に答える 1