TPH システム内の関連オブジェクト間に一連の関係を設定しています。
public abstract class Box
{
public Box()
{
Boxes = new HashSet<Box>();
Descriptors = new HashSet<Descriptor>();
}
public Guid Id { get; set; }
public virtual ICollection<Box> Boxes { get; set; }
public virtual ICollection<Descriptor> Descriptors { get; set; }
}
この基本クラスは、たとえば 3 つの個別のサブクラスによって拡張されます
public class Item: Box
{
public Sample()
{
Events = new HashSet<Event>();
Phones = new HashSet<Phone>();
}
public virtual ICollection<Phone> Phones { get; private set; }
public virtual ICollection<Event> Events{ get; private set; }
}
public class Phone : Box {}
public class Event: Box
{
public Item { get; private set; }
}
TPH では、Item、Phone、および Event オブジェクトを関連付けるために外部リレーション テーブルを作成するのではなく、Box テーブルにリレーションを設定しているようです。これでマッピングがどのように見えるかの良い例が見つかりません。