2011-02-04 2 views
0

일부 계층 적 데이터가 있습니다. 내가 사용하는 모델 클래스는 다음과 같습니다 : 내 데이터를 저장하는 here를 설명한 기술을 사용하고, 삽입 및 데이터를 검색하는 것은 문제가되지 않습니다했습니다엔티티 코드 - 우선의 계층 적 데이터 검색

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 

. 가져올 때 관련 테이블을 포함하는, 내가 (MVC의 튜토리얼에서 배운) 과거에이 기술을 사용했습니다

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

: 내가하고 싶은 무엇

,이 클래스로 분류 모음을 추가 할 것입니다 데이터. 그러나 이것을 시도했을 때 나는 IEnumerable <> 추상 (이는 이해할 수있는 것, 나는 프레임 워크가 내가하고 싶은 것을 알아낼 수 없었다고 생각한다)과 관련하여 오류를 받았다. ...

... 참으로 LINQ를 처음 접했을 때 LINQ가 어떤 모양인지 알 수 없었습니다. LINQ는 그 안에 자식이있는 Category 인스턴스의 모음을 돌려주었습니다.

수동으로 목록을 구성 할 수없는 경우 일반 LINQ 쿼리를 사용하여 특정 위치 (및 하위 항목)의 모든 범주를 가져 와서 수동으로 채울 수 있습니다.

LINQ가 나를 위해이 작업을 수행 할 수 있는지 궁금합니다.

미리 감사드립니다.

+0

정말 상속을 사용하지 않겠습니까? – Euphoric

답변

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가 필요하지 않습니까? 직접 수동으로 채우지 않으면 어떻게 할 수 있는지 알 수 없습니다. –

+0

깊이가있는 어린이에게만 제공됩니다. 당신이 할 수있는 linq2sql이 없기 때문에 아이들의 아이들도 얻고 싶다면 메모리에 재귀 함수를 작성하는 것이 좋습니다. – Magnus

+0

Category 클래스에 구체적인 List 속성을 추가하고 수동으로 채우는 것이 가장 좋습니다. 나는 그 일을하는 것이 좋으며, 나는 전체 트리를 순서대로 검색하여 재귀가 필요하지 않고 직접 채울 수 있습니다. –

0

그나마 사용을 IEnumerable<Category>하지만 Collection<Category> . 그게 문제인 경우 ..

관련 문제