0

假设我们有一个具有以下属性的发票项目实体:

发票项目

  • ID
  • 日期
  • 数字

Invoice Item有两个不同的子实体 (TPT),如下所示:

WarehouseInvoiceItem :发票项

  • 数量
  • 期间

FreightInvoiceItem :发票项

  • 重量

现在,我想填写一个具有以下结构的 DTO:

InvoiceItemDto

  • ID
  • 日期
  • 数字
  • ?数量
  • ?期间
  • ?重量

这就是我试图这样做的方式:

db.InvoiceItem.Select(i=>new InvoiceItemDto{
   Id = i.Id,
   Date = i.Date, ...
});

我无法访问驱动实体的特殊字段(例如 Duration of WarehouseInvoiceItem),因为我不能这样使用ofType

db.InvoiceItem.ofType<WarehouseInvoiceItem>().Select()

相反,我希望我可以这样选择:

db.InvoiceItem.Select(i=>new InvoiceItemDto{
   Id = i.Id,
   Date = i.Date,
   Duration = (i is WarehouseInvoiceItem)? (WarehouseInvoiceItem)i.Duration : null,
   Quantity = (i is WarehouseInvoiceItem)? (WarehouseInvoiceItem)i.Quantity : null,
   Weight = (i is FreightInvoiceItem)? (FreightInvoiceItem)i.Weight : null
});

知道出于这个原因我该如何管理查询吗?提前谢谢你。

4

0 回答 0