2014-10-31 50 views
0

一個實體的兒童我有一個實體,稱爲抓取實體框架

Public Class Equipment 
{ 
    int Id; 
    string EquipmentName; 
    int? ParentEquipmentId; 
} 

所以有這樣的實體,其中一個設備可以有父子關係。 我想獲取父設備以及與之相關設備的所有子項。

我可以在實體上獲取ICollection以獲取我的兒童嗎?

+0

可能重複相關[如何爲包括實體框架5個孩子對象的子對象]記錄(http://stackoverflow.com/questions/13047845/how- to-include-a-child-objects-child-object-in-entity-framework-5) – Kritner 2014-10-31 11:45:20

回答

0

是的,你需要在你的性對象的子集:

public virtual ICollection<Equipment> Children { get; set; } 

,並記得要加.Include(q => q.Children)到您的LINQ查詢加載孩子。

+1

我必須寫流利的api,因爲這不起作用 – 2014-10-31 12:10:39

+0

你可以但你不需要。嘗試讓你的實體首先正確加載。然後當你有它的工作添加孩子的集合,並在查詢和'包括'來加載兒童。還要記得在構造函數中初始化你的集合。如果這不能回答你的問題,請提供更多詳細信息,以便我更好地理解。 – Wojciech 2014-10-31 13:46:21

0

看來,你需要這樣的事情(不準確的語法)

家長和兒童的屬性:

public Equipment Parent 
{ 
    get 
    { 
     return dataContext.DbSet<Equipment>().SingleOrDefault(e=>e.Id == this.ParentEquipmentId); 
    } 
} 

public IEnumerable<Equipment> Children 
{ 
    get 
    { 
     return dataContext.DbSet<Equipment>().Where(e=>e.ParentEquipmentId == this.Id); 
    } 
} 

和使用您的Parent屬性來得到這個特定父的所有子設備:

this.Parent.Children 
+0

如何獲得兒童資產的所有兒童 – 2014-11-03 05:30:58

+0

使用var allSubchild = this.Children.SelectMany(c => c.Children); – xwrs 2014-11-03 09:18:46

2
Public Class Equipment 
{ 
    int Id; 
    string EquipmentName; 
    int? ParentEquipmentId; 
    virtual Equipment Parent; 
    Virtual ICollection<Equipment> Childrens 
} 

模型綁定使用流暢API

this.HasOptional(e => e.Parent) 
       .WithMany(e => e.Children) 
       .HasForeignKey(m => m.ParentEquipmentId); 

這將拉動與的