次のプロパティを持つInvoice Itemエンティティがあるとします。
InvoiceItem
- ID
- 日にち
- 番号
請求書アイテムには、次のように 2 つの異なる子エンティティ (TPT) があります。
WarehouseInvoiceItem : InvoiceItem
- 量
- 間隔
FreightInvoiceItem : InvoiceItem
- 重さ
ここで、次の構造で DTO を埋めたいと思います。
InvoiceItemDto
- ID
- 日にち
- 番号
- ?量
- ?間隔
- ?重さ
これは私がそうしようとしている方法です:
db.InvoiceItem.Select(i=>new InvoiceItemDto{
Id = i.Id,
Date = i.Date, ...
});
次のように使用できないため、駆動エンティティの特別なフィールド (たとえば、WarehouseInvoiceItem の Duration) にアクセスできません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
});
この理由でクエリを管理するにはどうすればよいですか? よろしくお願いします。