Linq嵌套关系和DTO

问题描述 投票:0回答:1

我正在从Oracle数据库获取数据并创建供内部使用的API。一些类(为简洁起见,简称:)>

CustomerOrderTab

    Public partial class CustomerOrderTab
    Public string OrderNo { get; set; }
    [ForeignKey("CustomerMV")]
    public string CustomerNo { get; set; }
    public List<CustomerOrderLineTab> CustomerOrderLines { get; set; }
    public List<CustomerOrderChargeTab> CustomerOrderCharge { get; set; }
    public List<ShipmentOrderLineTab> ShipmentOrderLines { get; set; }
    public CustomerMV CustomerMV { get; set; }

CustomerOrderDTO

    Public class OrderDTO
    public string OrderNo { get; set; }
    public string CustomerName { get; set; }
    public List<OrderLinesDTO> OrderLines { get; set; }
    public List<OrderChargesDTO> OrderCharges { get; set; }
    public List<ShipmentOrderLinesDTO> ShipmentOrderLines { get; set; }

ShipmentOrderLineTab

    public partial class ShipmentOrderLineTab
    public decimal ShipmentId { get; set; }
    [ForeignKey("CustomerOrderTab")]
    public string OrderNo { get; set; }
    public ShipmentTab Shipment { get; set; }

ShipmentOrderLineDTO

    public class ShipmentOrderLinesDTO
    public decimal ShipmentId { get; set; }
    public string OrderNo { get; set; }
    public ShipmentTab MyShipment { get; set; }

ShipmentTab

    public partial class ShipmentTab
    [ForeignKey("ShipmentOrderLineTab")]
    public decimal ShipmentId { get; set; }
    public string ShipperAddress1 { get; set; }
    public string ShipperAddress2 { get; set; }
    public List<ShipmentHandlingUnitTab> ShipmentHandlingUnits { get; set; }

ShipmentDTO

    public class ShipmentDTO
    public decimal ShipmentId { get; set; }
    public string ShipViaCode { get; set; }
    public string ShipmentPayer { get; set; }
    public List<ShipmentHandlingUnitDTO> ShipmentHandlingUnitDTOs { get; set; }

此作品:

    var orderLines = from o in _context.CustomerOrderTab
                         .Where(o => o.OrderNo == orderno)
                         select new OrderDTO()
                         {
                             OrderNo = o.OrderNo,
                             CustomerName = o.CustomerMV.CustomerName,

    This is a child of the order     ShipmentOrderLines = o.ShipmentOrderLines
    This works          .Select(ob => new ShipmentOrderLinesDTO
                             {
                                 ShipmentId = ob.ShipmentId,
                                 OrderNo = ob.OrderNo,
                                 MyShipment = ob.Shipment
    Adding this does not work         .Select(y => new ShipmentDTO
    The error says that ShipmentTab
     Doesn’t have a definition for Select    {
                                        }
                             }).ToList()

货件是ShipmentOrderLine的子项(每行只有一个货件)

[ShipmentOrderLine是CustomerOrder的子项(每个订单可以有很多行)

我认为问题在于,每条线只装一批,但是我尝试了很多事情,无法将其映射到我的DTO。

我正在从Oracle数据库获取数据并创建供内部使用的API。其中一些类(为简洁起见已缩短):CustomerOrderTab公共局部类CustomerOrderTab Public ...

c# entity-framework linq-to-entities
1个回答
0
投票

修复您的模型:

© www.soinside.com 2019 - 2024. All rights reserved.