我正在尝试映射父/子集合场景,其中父级和子级都使用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是否支持此功能,如果支持,我该如何实现呢?