2012-08-12 110 views
0

让我们假设我有3种类型具有相同元/导航属性HTML类的:实体框架,代码第一次3类相同的属性

  1. 公共虚拟字符串HtmlTagName {获得;设置;}
  2. public virtual ICollection <属性>属性{get;设置;}

    等等等等等等

这些3类之间的唯一差别是:

  1. 一个的Html类可具有HTML类的集合(父的Html类)
  2. 一个类可以是一个Html类(Child Html Class)的子类
  3. 一个类是独立的,即。它不是一个父类别,也不是一个HTML类别的另一个html类别(单个Html类别)

在我看来,拥有3个相同属性的类,保存它是父类,子类还是单个类,因为(同样,尽可能多的属性是相同的)。

回答

0

我想我找到了答案,有人纠正我,如果我错了:

public class HtmlElement : DelEntity 
{ 
    // Primitives 
    public virtual string DisplayName { get; set; } 

    // Foreign Key 
    public virtual long? ParentElementId { get; set; } // If it is a child 

    //Navigation - Class 
    [ForeignKey("ParentElementId")] 
    public virtual HtmlElement ParentHtmlElement { get; set; }   

    //Navigation - Collections (if it is a parent) 
    private ICollection<HtmlElement> _childElements; 

    [InverseProperty("ParentHtmlElement")] 
    public virtual ICollection<HtmlElement> ChildElements 
    { 
     get { return _childElements ?? (_childElements = new HashSet<HtmlElement>()); } 
     set { _childElements = value; } 
    } 

}

+0

是的,除非有一个孩子永远不能变成父母等等,那么你的要求需要使用其他模式,例如遗产。 – 2012-08-14 15:25:38