나는이 내 '카테고리'개체에 대한 다음과 같은 모델 클래스 : 이것은 '카테고리'내 능통 자 NHibernate 매핑 클래스는 유창함 NHibernate에 매핑 트리
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual IList<Category> SubCategories { get; set; }
입니다
: 이 관련 있다는Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name);
References(x => x.ParentCategory).Column("ParentCategoryId");
// ** THE BELOW MAPPING IS WHAT I'M UNSURE ABOUT **
HasMany(x => x.SubCategories).Where(x => x.Id == x.ParentCategory.Id);
내 데이터베이스는 루트 레벨에있는 (그리고 가지고 ParentCategoryId = NULL) 일부는 '범주'의 숫자로 구성되어 있으며 다른 모든 하위 범주 승이다 hich는 1 단계 깊이 일 수도 있고, 3,4,5 단계 깊이 일 수도 있습니다 (재귀 부모는 루트/부모 CategoryId까지 백업합니다. 행/기록 사이의 관계의
예 :
이Cars (Id = 1 - ParentCategoryId = NULL)
Cars (Id = 1) > Hatchback (Id = 2 - ParentCategoryId = 1)
Cars (Id = 1) > Hatchback (Id = 2) > Ford (Id = 3 - ParentCategoryId = 2)
Motorcycles (Id = 4 - ParentCategoryId = NULL)
Motorcycles (Id = 4) > Scooters (Id = 5 - ParentCategoryId = 4)
내 Category 클래스 내의 '하위'속성이 현재 카테고리의 'ParentCategoryId'가 모든 카테고리를 검색 할 필요가있다 (ID) , 그러나 나는 이것을 매핑하는 방법에 대해 확신 할 수 없다. 위의 예제에 표시된 HasMany 매핑을 시도했지만 실패했습니다.
, 내가 범주와 하위 범주의 올바른 관계를 얻는다. 예 : 1 => 4,5; 2 => 6,7. 그러나 나는 또한 목록 하위 범주를 얻는다. 그래서 마지막 모습은 1 => 4,5; 2 => 6,7; 4; 5; 6; 7. 실제로 하위 범주 인 4-7도 범주에서 동일한 수준으로 검색됩니다. 나는 너에게 의미가 있기를 희망한다. 어떻게 그걸 해결 했니? – jaxxbo