我正在尝试映射父/子集合场景,其中父子都使用 TPH 继承。我尝试了很多场景——没有一个奏效。对我来说,关键是每个父母在集合中只能有一种类型的孩子。下面是我想要实现的一个人为的例子:
public abstract class Order
{
public int ID { get; set; }
public decimal Total { get; set; }
}
public class SalesOrder : Order
{
public bool Rush { get; set; }
public virtual ICollection<SalesOrderLine> OrderLines { get; set; }
}
public class PurchaseOrder : Order
{
public string Contact{ get; set; }
public virtual ICollection<PurchaseOrderLine> OrderLines { get; set; }
}
public abstract class OrderLine
{
public int ID { get; set; }
public int OrderID { get; set; }
public string Sku { get; set; }
public int Quantity { get; set; }
public decimal Amount { get; set; }
}
public class SalesOrderLine : OrderLine
{
public decimal Discount { get; set; }
public virtual SalesOrder Order { get; set; }
}
public class PurchaseOrderLine : OrderLine
{
public int VendorID { get; set; }
public virtual PurchaseOrder Order { get; set; }
}
使用 TPH 将 SalesOrder 和 PurchaseOrder 类使用映射到 Order 表。SalesOrderLine 和 PurchaseOrderLine 使用 TPH 映射到 OrderLine 表。
EF 是否支持这一点,如果支持,我该如何实现?