3

親と子の両方が 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 はこれをサポートしていますか? もしそうなら、どうすれば達成できますか?

4

0 に答える 0