親と子の両方が TPH 継承を使用する親/子コレクション シナリオをマップしようとしています。多くのシナリオを試しましたが、どれもうまくいきませんでした。私にとって重要なのは、各親がコレクション内に 1 種類の子しか持てないことです。以下は、私が達成しようとしているものの不自然な例です。
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; }
}
SalesOrder および PurchaseOrder クラスの使用は、TPH を使用して Order テーブルにマップされます。また、SalesOrderLine と PurchaseOrderLine は、TPH を使用して OrderLine テーブルにマップされます。
EF はこれをサポートしていますか? もしそうなら、どうすれば達成できますか?