假设我们有一个具有以下属性的发票项目实体:
发票项目
- 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
});
知道出于这个原因我该如何管理查询吗?提前谢谢你。