2011-02-04 36 views
0

我有一些分層的數據。我使用該模型類看起來是這樣的:檢索實體代碼中的分層數據 - 首先

public class Category 
{ 
    [Key] 
    public int CategoryID { get; set; } 

    [Required] 
    [StringLength(64)] 
    public string Name { get; set; } 

    public int? ParentCategoryID { get; set; } 
    [ForeignKey("ParentCategoryID")] 
    public Category ParentCategory { get; set; } 

    [Required] 
    public int ListOrder { get; set; } 


    // left/right 
    public int TreeLeft { get; set; } 
    public int TreeRight { get; set; } 
} // eo class Category 

我用概括here存放我的數據的技術,並插入和檢索數據是沒有問題的。

我想怎麼辦,是一個集合類添加到這個類:

public virtual IEnumerable<Category> {get; set; } 

我已經在過去(從MVC的教程學)使用這種技術,讓時包括相關的表數據。然而,當我嘗試這樣做時,我收到了一個有關IEnumerable的錯誤(這是可以理解的,我猜框架無法弄清楚我想做什麼)...

...確實,對於LINQ來說是新手,我不知道LINQ看起來是什麼樣子,會讓我回收一批Category實例,其中每個實例都有他們的子女。

如果這是不可能的我想我可以手動構建列表,使用常規的LINQ查詢來獲取特定位置(及其子)的所有類別並手動填充它。

我想知道LINQ是否可以爲我做這個?

在此先感謝!

+0

你確定你不想使用繼承嗎? – Euphoric 2011-02-04 08:40:16

回答

1

如果你有當您添加表到DBML文件

,並期待這樣的事情應該是自動生成的自引用FK比集合:

[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Category_Category", Storage="Categories", ThisKey="pkCategoryID", OtherKey="ParentCategoryID")] 
public EntitySet<Category> Categories 
{ 
    get 
    { 
    return this._Categories; 
    } 
    set 
    { 
    this._Categories.Assign(value); 
    } 
} 
+0

但是,由於子類別有孩子等,這不會需要某種遞歸LINQ?我看不到如何自己手動填充它們。 – 2011-02-04 09:07:45

0

不使用IEnumerable<Category>Collection<Category> 。如果這是你的問題..

相關問題