Net Core API不会先返回所有子DB

问题描述

下面是我的代码。我想知道我是否可以使用其他东西更好。我觉得这应该是一个相当简单的回报。

存储库:

public Task<OrderHistory> GetInvoicedMacolaOrder(string orderNumber)
            {
                orderNumber = " " + orderNumber;
                DataContext.ChangeTracker.LazyLoadingEnabled = false;
    
                    var order = DataContext.OrderHistory
                                    .Include(order => order.OrderLines)
                                    .ThenInclude(line =>  line.vw_uniqueCartonIds)
                                    .FirstOrDefaultAsync(o => o.ord_no == orderNumber);
                    
                return order;
            }

OrderHistoryController:

[Authorize(Policy = "CreateReplacementOrder")]
        [HttpGet("invoicedorder/{orderNumber}/get")]
        public async Task<IActionResult> OrderLookUp(string orderNumber)
        {
            if (PoExists(orderNumber))
            {
                
                var order = await _mrepo.GetInvoicedOrder(orderNumber);
               
                var orderToReturn = _mapper.Map<OrderHistoryDtoDetail>(order);

                return Ok(orderToReturn);
            }
            else
            {
                return BadRequest("Could not find order number.");
            }
        }

这是返回的内容

 {
        "ord_no": "51464326","status": "P","ord_dt": "2020-03-29T00:00:00","apply_to_no": null,"oe_po_no": "3804339            ","cus_no": "65564654018","ship_to_name": "Omar brown"
        "OrderLines": [
            {
                "ord_type": "O","ord_no": "51464326","line_seq_no": 1,"item_no": "jkhhuk","line_no": 1,"vw_uniqueCartonIds": [
                    {
                        "Box_id": 20,"prod_cat": "044","Box_number": 1,"uniqueBoxID": "100001"
                    },{
                        "Box_id": 20,"Box_number": 2,"uniqueBoxID": "100002"
                    },"Box_number": 3,"uniqueBoxID": "100003"
                    }
                ]
            }
        ]
    }

我期望的是

{
            "ord_no": "51464326","ship_to_name": "Omar brown"
            "OrderLines": [
                {
                    "ord_type": "O","vw_uniqueCartonIds": [
                        {
                            "Box_id": 20,"uniqueBoxID": "100001"
                        },{
                            "Box_id": 21,"uniqueBoxID": "100002"
                        },{
                            "Box_id": 22,"uniqueBoxID": "100003"
                        }
                    ]
                },{
                    "ord_type": "O","line_seq_no": 2,"item_no": "58hhuk","line_no": 2,"vw_uniqueCartonIds": [
                        {
                            "Box_id": 25,"prod_cat": "054","uniqueBoxID": "200001"
                        },{
                            "Box_id": 26,"uniqueBoxID": "200002"
                        }
                    ]
                }
            ]
        }

我也看到了有关ReferenceLoopHandling的帖子,并将其添加到了startup.cs文件中,但无济于事。

services.AddControllers(options =>
                {
                    var policy = new AuthorizationPolicyBuilder()
                        .RequireAuthenticatedUser()
                        .Build();

                    options.Filters.Add(new Authorizefilter(policy));

                })
               .AddNewtonsoftJson(opt =>
                {
                    opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                });

感谢任何想法,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)