2011-02-22 70 views
0

嗨孩子的關係我已經運行如下與抽象基類及其實現基類和父/實體框架代碼優先

public class SuperParent 
{ 
    public ICollection<Parent> ParentList { get; set; } 
} 

public abstract class Parent 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
} 

public abstract class ParentExtended : Parent 
{ 
    public ICollection<ChildClass> ChildClassList { get; set; } 
} 

public class RealClass : ParentExtended 
{ 

} 

public class ChildClass 
{ 
    public int Id { get; set; } 
    public Parent Parent { get; set; } 
} 

的DbContext看起來之間的父/子關係的一個問題:

public DbSet<SuperParent> SuperParents { get; set; } 
    public DbSet<Parent> Parents { get; set; } 
    public DbSet<ChildClass> ChildClasses { get; set; } 

實施例代碼

SuperParent sp = new SuperParent(); 
    sp.ParentList = new List<Parent>(); 


    RealClass parent = new RealClass(); 
    parent.ChildClassList = new List<ChildClass>(); 
    parent.ChildClassList.Add(new ChildClass()); 

    sp.ParentList.Add(parent); 

結果在數據庫表ChildClass瓦特第i列

  • 編號
  • PARENTID(FK)
  • ParentExtendedId(FK)

其中的ParentId總是空,parentExtendedId充滿了正確的ID,但不想要的。

我的問題是要走的路,我怎麼可以給childclass家長作爲家長,而不是ParentExtended

回答

1

,我發現自己的答案,它是相當容易:) 裝點的childList與ParentExtended抽象類一個數據註釋,它告訴這個類什麼是兒童的逆向屬性。

所以在我的例子:

public abstract class ParentExtended : Parent 
{ 
    [InverseProperty("Parent")]  
    public ICollection<ChildClass> ChildClassList { get; set; } 
} 

隨着創建一個指向回Realclass但在變量名爲父

+0

THANK YOU! :D .. – Yablargo 2011-07-19 21:16:04