使用List <basetype>作为实体的字段,用于使用Entity Framework保存派生实体?</basetype>

时间:2014-05-31 08:04:41

标签: c# entity-framework inheritance

假设我有一个实体,代表重复发生的事件:

public class ReccuringEvent : EntityBase, IReccuringEvent
{
    public virtual ICollection<ReccuringElementBase> IncludedElements { get; private set; }
    public virtual ICollection<ReccuringElementBase> ExcludedElements { get; private set; }
}

假设我有一堆派生自ReccuringElementBase的实体(此类包含每月,每周的一些共享数据)。 E.g:

public class ReccuringElementBase
{
    public DateTime _startFrom { get; private set; }
    public DateTime _endBy { get; private set; }
    ...
}

public class Monthly : ReccuringElementBase
{
    public int MonthToPerform { get; private set; }
    ...
}

我想要的是在List&lt;&#39; ReccuringElementBase&gt;中保留它们(每周,每月等)。 InlcudedElements / ExcludedElements。当您明确地将派生类用作属性或属性集合(如SomeReccuringRule实体中的每月/每周)并将它们映射到数据库表(使用每个层次结构表(TPH),每种类型的表(TPT))时,实体框架可以处理这种情况,每混凝土表(TPC)):

public class SomeReccuringRule : EntityBase
{
    public Monthly { get; private set; }
    public Weekly { get; private set; }
    ...
}

但是,我有一些不同的东西。 Can Entity Framework map ICollection类型的属性&lt;&#39; ReccuringElementBase&gt; (必须持有每月,每周等)到数据库,如果是,它是如何实现的?

0 个答案:

没有答案