2011-02-04 33 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> 。如果这是你的问题..

相关问题